AWS命令行界面创建部署而无需appspec文件

3

有没有一种方式可以在不使用 appspec.yml 文件的情况下运行 AWS Codedeploy

我正在寻找一种完全基于命令行的方式来运行 create-deployment,而不需要在 S3 存储桶中使用任何 yml 文件。

3个回答

6
我在网上找到了使用YAML输入的示例,但没有使用JSON输入的示例。 尽管YAML有其优点,但我认为有时在bash / gitlab CI脚本中使用JSON更容易操作。

使用JSON调用aws deploy的方法,而不使用S3并在变量中构建Appspec内容:

APPSPEC=$(echo '{"version":1,"Resources":[{"TargetService":{"Type":"AWS::ECS::Service","Properties":{"TaskDefinition":"'${AWS_TASK_DEFINITION_ARN}'","LoadBalancerInfo":{"ContainerName":"react-web","ContainerPort":3000}}}}]}' | jq -Rs .)

注意最后的 jq -Rs .,内容应为 JSON 字符串而不是实际 JSON 的一部分。使用 jq 可以转义 JSON。根据需要替换变量(如 AWS_TASK_DEFINITION_ARN、ContainerName 和 ContainerPort 等)。
REVISION='{"revisionType":"AppSpecContent","appSpecContent":{"content":'${APPSPEC}'}}'

最后,我们可以使用新版本创建部署:

aws deploy create-deployment --application-name "${AWS_APPLICATION_NAME}" --deployment-group-name "${AWS_DEPLOYMENT_GROUP_NAME}" --revision "$REVISION"

在aws-cli/2.4.15版本上进行了测试


0

在 AWS Lambda/ECS 部署中,可以创建不带 S3 中 appspec.yaml 文件的部署。

使用 AWS Cli V2:https://awscli.amazonaws.com/v2/documentation/api/latest/reference/deploy/create-deployment.html

aws deploy create-deployment --cli-input-yaml file://code-deploy.yaml

其中code-deploy.yaml将具有以下结构(ecs服务示例):

applicationName: 'code-deploy-app'
deploymentGroupName: 'code-deploy-deployment-group'
revision:
  revisionType: AppSpecContent
  appSpecContent:
    content: |
      version: 0.0
      Resources:
        - TargetService:
            Type: AWS::ECS::Service
            Properties:
              TaskDefinition: "[YOUR_TASK_DEFINITION_ARN]"
              LoadBalancerInfo:
                ContainerName: "ecs-service-container"
                ContainerPort: 8080

0

很遗憾,没有办法在不使用appspec文件的情况下执行CodeDeploy。

您可以使用CodePipeline将资产部署到S3存储桶(不需要appspec)。但是,如果它们要传输到EC2实例,则需要找到自己的方法来拉取它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接