CodeDeploy のリビジョンにアプリケーション仕様ファイルを追加する - AWS CodeDeploy

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

CodeDeploy のリビジョンにアプリケーション仕様ファイルを追加する

このトピックでは、AppSpec ファイルをデプロイに追加する方法について説明します。また、AppSpec ファイルを作成するためのテンプレートも含まれています。AWSLambda および EC2/オンプレミスデプロイの場合

Amazon ECS デプロイ用の AppSpec ファイルを追加する

Amazon ECS コンピューティングプラットフォームへのデプロイの場合:

  • AppSpec ファイルは、デプロイに使用される Amazon ECS タスク定義、トラフィックをルーティングするコンテナ名とポートマッピング、およびデプロイライフサイクルイベントの後で実行される Lambda 関数を指定するために使用されます。

  • リビジョンは、AppSpec ファイルと同じです。

  • AppSpec ファイルは、JSON または YAML を使用して書き込むことができます。

  • AppSpec ファイルは、テキストファイルとして保存するか、デプロイ作成時にコンソールに直接入力することができます。詳細については、「 Amazon ECS コンピューティングプラットフォームのデプロイの作成 (コンソール) 」を参照してください。

AppSpec ファイルを作成するには

  1. JSON または YAML テンプレートをテキストエディタ、またはコンソールの AppSpec エディタにコピーします。

  2. 必要に応じてテンプレートを変更します。

  3. JSON または YAML Validator を使用して、AppSpec ファイルを検証します。AppSpec エディタを使用している場合は、[デプロイの作成] を選択すると、このファイルが検証されます。

  4. テキストエディタを使用している場合は、ファイルを保存します。を使用する場合AWS CLIを使用してデプロイを作成する場合は、AppSpec ファイルがハードドライブ、または Amazon S3 バケットにあるかどうかを確認します。コンソールを使用している場合は、AppSpec ファイルを Amazon S3 にプッシュする必要があります。

Amazon ECS デプロイ用の YAML AppSpec ファイルテンプレート (手順を含む)

以下に示しているのは、利用できるすべてのオプションを含む Amazon ECS デプロイ用の YAML テンプレートです。hooks セクションで使用するライフサイクルイベントについては、「Amazon ECS デプロイ用の AppSpec の「hooks」セクション」を参照してください。

# This is an appspec.yml template file for use with an Amazon ECS deployment in CodeDeploy. # The lines in this template that start with the hashtag are # comments that can be safely left in the file or # ignored. # For help completing this file, see the "AppSpec File Reference" in the # "CodeDeploy User Guide" at # https://docs.aws.amazon.com/codedeploy/latest/userguide/app-spec-ref.html version: 0.0 # In the Resources section, you must specify the following: the Amazon ECS service, task definition name, # and the name and port of the your load balancer to route traffic, # target version, and (optional) the current version of your AWS Lambda function. Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: "" # Specify the ARN of your task definition (arn:aws:ecs:region:account-id:task-definition/task-definition-family-name:task-definition-revision-number) LoadBalancerInfo: ContainerName: "" # Specify the name of your Amazon ECS application's container ContainerPort: "" # Specify the port for your container where traffic reroutes # Optional properties PlatformVersion: "" # Specify the version of your Amazon ECS Service NetworkConfiguration: AwsvpcConfiguration: Subnets: ["",""] # Specify one or more comma-separated subnets in your Amazon ECS service SecurityGroups: ["",""] # Specify one or more comma-separated security groups in your Amazon ECS service AssignPublicIp: "" # Specify "ENABLED" or "DISABLED" # (Optional) In the Hooks section, specify a validation Lambda function to run during # a lifecycle event. Hooks: # Hooks for Amazon ECS deployments are: - BeforeInstall: "" # Specify a Lambda function name or ARN - AfterInstall: "" # Specify a Lambda function name or ARN - AfterAllowTestTraffic: "" # Specify a Lambda function name or ARN - BeforeAllowTraffic: "" # Specify a Lambda function name or ARN - AfterAllowTraffic: "" # Specify a Lambda function name or ARN

Amazon ECS デプロイテンプレート用の JSON AppSpec ファイル

以下に示しているのは、利用できるすべてのオプションを含む Amazon ECS デプロイ用の JSON テンプレートです。テンプレートの使用方法については、前のセクションの YAML バージョンのコメントを参照してください。hooks セクションで使用するライフサイクルイベントについては、「Amazon ECS デプロイ用の AppSpec の「hooks」セクション」を参照してください。

{ "version": 0.0, "Resources": [ { "TargetService": { "Type": "AWS::ECS::Service", "Properties": { "TaskDefinition": "", "LoadBalancerInfo": { "ContainerName": "", "ContainerPort": }, "PlatformVersion": "", "NetworkConfiguration": { "AwsvpcConfiguration": { "Subnets": [ "", "" ], "SecurityGroups": [ "", "" ], "AssignPublicIp": "" } } } } } ], "Hooks": [ { "BeforeInstall": "" }, { "AfterInstall": "" }, { "AfterAllowTestTraffic": "" }, { "BeforeAllowTraffic": "" }, { "AfterAllowTraffic": "" } ] }

AppSpec ファイルを追加するAWSLambda デプロイの場合

へのデプロイの場合AWSLambda コンピューティングプラットフォーム:

  • AppSpec ファイルには、デプロイされる Lambda 関数に関する手順が含まれており、デプロイの検証で使用されます。

  • リビジョンは、AppSpec ファイルと同じです。

  • AppSpec ファイルは、JSON または YAML を使用して書き込むことができます。

  • AppSpec ファイルは、テキストファイルとして保存するか、デプロイ作成時にコンソールの AppSpec エディタに直接入力することができます。詳細については、「を作成するAWSLambda コンピュートプラットフォームのデプロイ (コンソール)」を参照してください。

AppSpec ファイルを作成するには:

  1. JSON または YAML テンプレートをテキストエディタ、またはコンソールの AppSpec エディタにコピーします。

  2. 必要に応じてテンプレートを変更します。

  3. JSON または YAML Validator を使用して、AppSpec ファイルを検証します。AppSpec エディタを使用している場合は、[デプロイの作成] を選択すると、このファイルが検証されます。

  4. テキストエディタを使用している場合は、ファイルを保存します。を使用する場合AWS CLIを使用してデプロイを作成する場合は、AppSpec ファイルがハードドライブ、または Amazon S3 バケットにあるかどうかを確認します。コンソールを使用している場合は、AppSpec ファイルを Amazon S3 にプッシュする必要があります。

YAML AppSpec ファイルテンプレートAWS Lambdaインストラクション付き展開

hooks セクションで使用するライフサイクルイベントについては、「の AppSpec の「hooks」セクションAWSLambda デプロイメント」を参照してください。

# This is an appspec.yml template file for use with an AWS Lambda deployment in CodeDeploy. # The lines in this template starting with the hashtag symbol are # instructional comments and can be safely left in the file or # ignored. # For help completing this file, see the "AppSpec File Reference" in the # "CodeDeploy User Guide" at # https://docs.aws.amazon.com/codedeploy/latest/userguide/app-spec-ref.html version: 0.0 # In the Resources section specify the name, alias, # target version, and (optional) the current version of your AWS Lambda function. Resources: - MyFunction: # Replace "MyFunction" with the name of your Lambda function Type: AWS::Lambda::Function Properties: Name: "" # Specify the name of your Lambda function Alias: "" # Specify the alias for your Lambda function CurrentVersion: "" # Specify the current version of your Lambda function TargetVersion: "" # Specify the version of your Lambda function to deploy # (Optional) In the Hooks section, specify a validation Lambda function to run during # a lifecycle event. Replace "LifeCycleEvent" with BeforeAllowTraffic # or AfterAllowTraffic. Hooks: - LifeCycleEvent: "" # Specify a Lambda validation function between double-quotes.

JSON AppSpec ファイルのAWS Lambda配置テンプレート

以下のテンプレートで、"MyFunction" を AWS Lambda 関数名に置き換えます。オプションの Hooks セクションで、ライフサイクルイベントを BeforeAllowTraffic または AfterAllowTraffic に置き換えます。

Hooks セクションで使用するライフサイクルイベントについては、「の AppSpec の「hooks」セクションAWSLambda デプロイメント」を参照してください。

{ "version": 0.0, "Resources": [{ "MyFunction": { "Type": "AWS::Lambda::Function", "Properties": { "Name": "", "Alias": "", "CurrentVersion": "", "TargetVersion": "" } } }], "Hooks": [{ "LifeCycleEvent": "" } ] }

EC2/オンプレミスデプロイ用の AppSpec ファイルを追加する

AppSpec ファイルがないと、CodeDeploy は、アプリケーションリビジョンのソースファイルを送信先にマッピングしたり、EC2/オンプレミスコンピューティングプラットフォームにデプロイするためのスクリプトを実行できません。

各リビジョンには、AppSpec ファイルを 1 つだけ含める必要があります

リビジョンに AppSpec ファイルを追加するには:

  1. テンプレートにテキストエディターをコピーします。

  2. 必要に応じてテンプレートを変更します。

  3. YAML Validator を使用して、AppSpec ファイルの妥当性をチェックします。

  4. リビジョンのルートディレクトリに appspec.yml としてファイルを保存します。

  5. 次のいずれかのコマンドを実行して、AppSpec ファイルがルートディレクトリに配置されていることを確認します。

    • Linux、macOS、Unix の場合:

      find /path/to/root/directory -name appspec.yml

      そこに AppSpec ファイルが見つからない場合は、出力は発生しません。

    • Windows の場合:

      dir path\to\root\directory\appspec.yml

      Aファイルが見つかりませんそこに AppSpec ファイルが保存されていない場合は、[] エラーが表示されます。

  6. リビジョンを Amazon S3 または GitHub にプッシュします。

    手順については、「Amazon S3 にCodeDeploy のリビジョンをプッシュする(EC2/オンプレミスのデプロイのみ)」を参照してください。

EC2/オンプレミスデプロイ用の AppSpec ファイルテンプレート

注記

Windows Server インスタンスへのデプロイメントでは、runas要素。Windows Server インスタンスにデプロイする場合は、AppSpec ファイルには含めないでください。

# This is an appspec.yml template file for use with an EC2/On-Premises deployment in CodeDeploy. # The lines in this template starting with the hashtag symbol are # instructional comments and can be safely left in the file or # ignored. # For help completing this file, see the "AppSpec File Reference" in the # "CodeDeploy User Guide" at # https://docs.aws.amazon.com/codedeploy/latest/userguide/app-spec-ref.html version: 0.0 # Specify "os: linux" if this revision targets Amazon Linux, # Red Hat Enterprise Linux (RHEL), or Ubuntu Server # instances. # Specify "os: windows" if this revision targets Windows Server instances. # (You cannot specify both "os: linux" and "os: windows".) os: linux # os: windows # During the Install deployment lifecycle event (which occurs between the # BeforeInstall and AfterInstall events), copy the specified files # in "source" starting from the root of the revision's file bundle # to "destination" on the Amazon EC2 instance. # Specify multiple "source" and "destination" pairs if you want to copy # from multiple sources or to multiple destinations. # If you are not copying any files to the Amazon EC2 instance, then remove the # "files" section altogether. A blank or incomplete "files" section # may cause associated deployments to fail. files: - source: destination: - source: destination: # For deployments to Amazon Linux, Ubuntu Server, or RHEL instances, # you can specify a "permissions" # section here that describes special permissions to apply to the files # in the "files" section as they are being copied over to # the Amazon EC2 instance. # For more information, see the documentation. # If you are deploying to Windows Server instances, # then remove the # "permissions" section altogether. A blank or incomplete "permissions" # section may cause associated deployments to fail. permissions: - object: pattern: except: owner: group: mode: acls: - context: user: type: range: type: - # If you are not running any commands on the Amazon EC2 instance, then remove # the "hooks" section altogether. A blank or incomplete "hooks" section # may cause associated deployments to fail. hooks: # For each deployment lifecycle event, specify multiple "location" entries # if you want to run multiple scripts during that event. # You can specify "timeout" as the number of seconds to wait until failing the deployment # if the specified scripts do not run within the specified time limit for the # specified event. For example, 900 seconds is 15 minutes. If not specified, # the default is 1800 seconds (30 minutes). # Note that the maximum amount of time that all scripts must finish executing # for each individual deployment lifecycle event is 3600 seconds (1 hour). # Otherwise, the deployment will stop and CodeDeploy will consider the deployment # to have failed to the Amazon EC2 instance. Make sure that the total number of seconds # that are specified in "timeout" for all scripts in each individual deployment # lifecycle event does not exceed a combined 3600 seconds (1 hour). # For deployments to Amazon Linux, Ubuntu Server, or RHEL instances, # you can specify "runas" in an event to # run as the specified user. For more information, see the documentation. # If you are deploying to Windows Server instances, # remove "runas" altogether. # If you do not want to run any commands during a particular deployment # lifecycle event, remove that event declaration altogether. Blank or # incomplete event declarations may cause associated deployments to fail. # During the ApplicationStop deployment lifecycle event, run the commands # in the script specified in "location" starting from the root of the # revision's file bundle. ApplicationStop: - location: timeout: runas: - location: timeout: runas: # During the BeforeInstall deployment lifecycle event, run the commands # in the script specified in "location". BeforeInstall: - location: timeout: runas: - location: timeout: runas: # During the AfterInstall deployment lifecycle event, run the commands # in the script specified in "location". AfterInstall: - location: timeout: runas: - location: timeout: runas: # During the ApplicationStart deployment lifecycle event, run the commands # in the script specified in "location". ApplicationStart: - location: timeout: runas: - location: timeout: runas: # During the ValidateService deployment lifecycle event, run the commands # in the script specified in "location". ValidateService: - location: timeout: runas: - location: timeout: runas: