您可以将参数传递给 Cloudformation 中的 bash 脚本吗?
Can you pass a parameter into a bash script in Cloudformation?
我正在尝试创建一个 bash 脚本来将 EC2 实例更新到最新版本的 Boto3。为此,我需要将 .zip 文件放入指定的 S3 存储桶中。我希望用户在部署堆栈时输入其 S3 存储桶的名称,然后将其输入到 bash 脚本中。
这是我的代码:
Parameters:
BucketName:
Type: String
Resources:
rRunLambdaLayerScript:
Type: AWS::SSM::Association
Properties:
Name: AWS-RunShellScript
WaitForSuccessTimeoutSeconds: 300
Targets:
- Key: tag:Lambda
Values:
- layer
Parameters:
commands:
- |
#!/usr/bin/env bash
mkdir lambda_layer
cd lambda_layer/
mkdir python
cd python/
pip3 install boto3 -t ./
cd ..
zip -r /tmp/lambda_layer.zip .
aws s3 cp /tmp/lambda_layer.zip s3://$BucketName
这样做会导致脚本将其留空并出现“参数验证失败”错误。
你通常使用 Sub:
Parameters:
BucketName:
Type: String
Resources:
rRunLambdaLayerScript:
Type: AWS::SSM::Association
Properties:
Name: AWS-RunShellScript
WaitForSuccessTimeoutSeconds: 300
Targets:
- Key: tag:Lambda
Values:
- layer
Parameters:
commands:
- !Sub |
#!/usr/bin/env bash
mkdir lambda_layer
cd lambda_layer/
mkdir python
cd python/
pip3 install boto3 -t ./
cd ..
zip -r /tmp/lambda_layer.zip .
aws s3 cp /tmp/lambda_layer.zip s3://${BucketName}
我正在尝试创建一个 bash 脚本来将 EC2 实例更新到最新版本的 Boto3。为此,我需要将 .zip 文件放入指定的 S3 存储桶中。我希望用户在部署堆栈时输入其 S3 存储桶的名称,然后将其输入到 bash 脚本中。 这是我的代码:
Parameters:
BucketName:
Type: String
Resources:
rRunLambdaLayerScript:
Type: AWS::SSM::Association
Properties:
Name: AWS-RunShellScript
WaitForSuccessTimeoutSeconds: 300
Targets:
- Key: tag:Lambda
Values:
- layer
Parameters:
commands:
- |
#!/usr/bin/env bash
mkdir lambda_layer
cd lambda_layer/
mkdir python
cd python/
pip3 install boto3 -t ./
cd ..
zip -r /tmp/lambda_layer.zip .
aws s3 cp /tmp/lambda_layer.zip s3://$BucketName
这样做会导致脚本将其留空并出现“参数验证失败”错误。
你通常使用 Sub:
Parameters:
BucketName:
Type: String
Resources:
rRunLambdaLayerScript:
Type: AWS::SSM::Association
Properties:
Name: AWS-RunShellScript
WaitForSuccessTimeoutSeconds: 300
Targets:
- Key: tag:Lambda
Values:
- layer
Parameters:
commands:
- !Sub |
#!/usr/bin/env bash
mkdir lambda_layer
cd lambda_layer/
mkdir python
cd python/
pip3 install boto3 -t ./
cd ..
zip -r /tmp/lambda_layer.zip .
aws s3 cp /tmp/lambda_layer.zip s3://${BucketName}