implemented aws.#Config and aws/cloudformation packages in stdlib
Signed-off-by: Sam Alba <sam.alba@gmail.com>
This commit is contained in:
101
stdlib/aws/cloudformation/cloudformation.cue
Normal file
101
stdlib/aws/cloudformation/cloudformation.cue
Normal file
@@ -0,0 +1,101 @@
|
||||
package cloudformation
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"dagger.io/dagger"
|
||||
"dagger.io/alpine"
|
||||
"dagger.io/aws"
|
||||
)
|
||||
|
||||
// AWS CloudFormation Stack
|
||||
#Stack: {
|
||||
|
||||
// AWS Config
|
||||
config: aws.#Config
|
||||
|
||||
// Source is the Cloudformation template (JSON/YAML string)
|
||||
source: string
|
||||
|
||||
// Stackname is the cloudformation stack
|
||||
stackName: string
|
||||
|
||||
// Stack parameters
|
||||
parameters: [string]: _
|
||||
|
||||
// Behavior when failure to create/update the Stack
|
||||
onFailure: *"DO_NOTHING" | "ROLLBACK" | "DELETE"
|
||||
|
||||
// Timeout for waiting for the stack to be created/updated (in minutes)
|
||||
timeout: *10 | uint
|
||||
|
||||
// Never update the stack if already exists
|
||||
neverUpdate: *false | bool
|
||||
|
||||
#files: {
|
||||
"/entrypoint.sh": #Code
|
||||
"/src/template.json": source
|
||||
if len(parameters) > 0 {
|
||||
"/src/parameters.json": json.Marshal(
|
||||
[ for key, val in parameters {
|
||||
ParameterKey: "\(key)"
|
||||
ParameterValue: "\(val)"
|
||||
}])
|
||||
"/src/parameters_overrides.json": json.Marshal([ for key, val in parameters {"\(key)=\(val)"}])
|
||||
}
|
||||
}
|
||||
|
||||
outputs: {
|
||||
[string]: string
|
||||
|
||||
#dagger: compute: [
|
||||
dagger.#Load & {
|
||||
from: alpine.#Image & {
|
||||
package: bash: "=5.1.0-r0"
|
||||
package: jq: "=1.6-r1"
|
||||
package: "aws-cli": "=1.18.177-r0"
|
||||
}
|
||||
},
|
||||
dagger.#Mkdir & {
|
||||
path: "/src"
|
||||
},
|
||||
for dest, content in #files {
|
||||
dagger.#WriteFile & {
|
||||
"dest": dest
|
||||
"content": content
|
||||
}
|
||||
},
|
||||
dagger.#Exec & {
|
||||
args: [
|
||||
"/bin/bash",
|
||||
"--noprofile",
|
||||
"--norc",
|
||||
"-eo",
|
||||
"pipefail",
|
||||
"/entrypoint.sh",
|
||||
]
|
||||
env: {
|
||||
AWS_CONFIG_FILE: "/cache/aws/config"
|
||||
AWS_ACCESS_KEY_ID: config.accessKey
|
||||
AWS_SECRET_ACCESS_KEY: config.secretKey
|
||||
AWS_DEFAULT_REGION: config.region
|
||||
AWS_REGION: config.region
|
||||
AWS_DEFAULT_OUTPUT: "json"
|
||||
AWS_PAGER: ""
|
||||
if neverUpdate {
|
||||
NEVER_UPDATE: "true"
|
||||
}
|
||||
STACK_NAME: stackName
|
||||
TIMEOUT: "\(timeout)"
|
||||
ON_FAILURE: onFailure
|
||||
}
|
||||
dir: "/src"
|
||||
mount: "/cache/aws": "cache"
|
||||
},
|
||||
dagger.#Export & {
|
||||
source: "/outputs.json"
|
||||
format: "json"
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user