Closed2

「aws cloudformation package」コマンドは何してる?

dehio3dehio3

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/using-cfn-cli-package.html

ファイルを手動で S3 バケットにアップロードし、テンプレートに場所を追加する代わりに、ローカルアーティファクトと呼ばれるローカルリファレンスをテンプレート内で指定し、package CLI コマンドを使用してすばやくアップロードできます。
ファイルを指定する場合、コマンドはそれを S3 バケットに直接アップロードします。アーティファクトをアップロードしたら、コマンドはテンプレートのコピーを返します。その中で、ローカルアーティファクトへの参照は、コマンドがアーティファクトをアップロードした S3 の場所に置き換えられます。その後、返されたテンプレートを使用してスタックを作成または更新できます。

https://docs.aws.amazon.com/cli/latest/reference/cloudformation/package.html
以下の場所で参照されているローカルの成果物をアップロードできる。

BodyS3Location property for the AWS::ApiGateway::RestApi resource
Code property for the AWS::Lambda::Function resource
Content property for the AWS::Lambda::LayerVersion resource
CodeUri property for the AWS::Serverless::Function resource
ContentUri property for the AWS::Serverless::LayerVersion resource
Location property for the AWS::Serverless::Application resource
DefinitionS3Location property for the AWS::AppSync::GraphQLSchema resource
RequestMappingTemplateS3Location property for the AWS::AppSync::Resolver resource
ResponseMappingTemplateS3Location property for the AWS::AppSync::Resolver resource
RequestMappingTemplateS3Location property for the AWS::AppSync::FunctionConfiguration resource
ResponseMappingTemplateS3Location property for the AWS::AppSync::FunctionConfiguration resource
DefinitionUri property for the AWS::Serverless::Api resource
Location parameter for the AWS::Include transform
SourceBundle property for the AWS::ElasticBeanstalk::ApplicationVersion resource
TemplateURL property for the AWS::CloudFormation::Stack resource
Command.ScriptLocation property for the AWS::Glue::Job resource
DefinitionS3Location property for the AWS::StepFunctions::StateMachine resource
DefinitionUri property for the AWS::Serverless::StateMachine resource
S3 property for the AWS::CodeCommit::Repository resource

Lambdaの例
  Encode:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: !Sub "${AWS::StackName}-encode"
      Description: Creates a MediaConvert encode job
      Handler: index.handler
      Role: !GetAtt EncodeRole.Arn
      Code: encode.zip
packegeコマンド例
$ aws cloudformation package \
--template-file regional-s3-assets/video-on-demand-on-aws.template \
--s3-bucket cf-templates-video-streaming-dev-ap-northeast-1 \
--output-template-file video-on-demand-on-aws.template
package後のCloudFormationテンプレート
  Encode:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName:
        Fn::Sub: ${AWS::StackName}-encode
      Description: Creates a MediaConvert encode job
      Handler: index.handler
      Role:
        Fn::GetAtt:
        - EncodeRole
        - Arn
      Code:
        S3Bucket: cf-templates-video-streaming-dev-ap-northeast-1
        S3Key: 3adefb317806e424ff6bb01771e807d5
  • CodeS3BucketS3Keyに変わっている
  • S3Bucketはコードがアップロードされたバケット名、S3Keyはオブジェクト名が設定される
dehio3dehio3

変更セットの変更内容でbeforeValueに設定されている値と、既存のテンプレートの値が違う問題

テンプレート
  InputValidate:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName:
        Fn::Sub: ${AWS::StackName}-input-validate
      Description: Validates the input given to the workflow
      Handler: index.handler
      Role:
        Fn::GetAtt:
        - InputValidateRole
        - Arn
      Code:
        S3Bucket: cf-templates-video-streaming-dev-ap-northeast-1
        S3Key: 56be14605fefc91ce64f2dc89ac1863d
      Runtime: nodejs12.x
      Timeout: 120
変更セット
  {
    "type": "Resource",
    "resourceChange": {
      "action": "Modify",
      "logicalResourceId": "InputValidate",
      "physicalResourceId": "video-streaming-input-validate",
      "resourceType": "AWS::Lambda::Function",
      "replacement": "False",
      "scope": [
        "Properties"
      ],
      "details": [
        {
          "target": {
            "attribute": "Properties",
            "name": "Code",
            "requiresRecreation": "Never",
            "path": "/Properties/Code/S3Key",
            "beforeValue": "68ad9567d20eeb71f7a025a3ba5136ff",
            "afterValue": "4a23b159c58af4b364b82c1a557a2701",
            "attributeChangeType": "Modify"
          },
          "evaluation": "Static",
          "changeSource": "DirectModification"
        }
      ],
      "beforeContext": "",
      "afterContext": ""
    }
  },

S3Key

  • 56be14605fefc91ce64f2dc89ac1863d
    • LastModified: 2022-03-15T05:00:14+00:00
  • 68ad9567d20eeb71f7a025a3ba5136ff
    • 今動いてるLambda
    • LastModified: 2024-10-23T04:15:49+00:00
  • 4a23b159c58af4b364b82c1a557a2701
    • 新しく作成されたLambda
    • LastModified: 2024-11-08T08:45:05+00:00
このスクラップは2ヶ月前にクローズされました