AWS CodeDeploy
ユーザーガイド (API バージョン 2014-10-06)

CodeDeploy 用の Amazon EC2 インスタンスの作成 (AWS CLI または Amazon EC2 コンソール)

CodeDeploy デプロイ用に設定した新しい Amazon EC2 インスタンスを起動する手順を以下に示します。

AWS CloudFormation テンプレートを使用して、CodeDeploy デプロイ用に設定済みの Amazon Linux または Windows Server を実行する Amazon EC2 インスタンスを起動できます。Ubuntu Server または Red Hat Enterprise Linux (RHEL) を実行する Amazon EC2 インスタンス用の AWS CloudFormation テンプレートは提供していません。テンプレートを使用する代わりに、「CodeDeploy のインスタンスの使用」を参照してください。

Amazon EC2 コンソール、AWS CLI、または Amazon EC2 API を使用して、Amazon EC2 インスタンスを起動できます。

Amazon EC2 インスタンス (コンソール) の起動

CodeDeploy の使用開始」の手順に従って AWS CLI をセットアップして設定し、IAM インスタンスプロファイルを作成します (まだ行っていない場合)。

  1. AWS マネジメントコンソールにサインインをしたあと、https://console.aws.amazon.com/ec2/ にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで [インスタンス]、[インスタンスの作成] の順に選択します。

  3. [Step 1: Choose an Amazon Machine Image (AMI)] ページで、[Quick Start] タブから、使用するオペレーションシステムおよびバージョンを探して、[Select] を選択します。CodeDeploy によりサポートされている ​Amazon EC2 AMI オペレーティングシステムを選択する必要があります。詳細については、「CodeDeploy エージェントでサポートされているオペレーティングシステム」を参照してください。

  4. [ステップ 2: インスタンスタイプの選択] ページで、利用可能な Amazon EC2 インタンスタイプを選択し、[次の手順: インスタンスの詳細の設定] を選択します。

  5. [ステップ 3: インスタンスの詳細の設定] ページの [IAM ロール] リストで、「ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する」で作成した IAM インスタンスロールを選択します。提案されたロール名を使用している場合は、[CodeDeployDemo-EC2-Instance-Profile] を選択します。独自のロール名を作成した場合は、その名前を選択します。

    注記

    [Launch into EC2-Classic (EC2-Classic に作成)] またはデフォルトの Virtual Private Cloud (VPC) が [Network (ネットワーク)] リストに表示されておらず、EC2-Classic の起動をサポートする別の Amazon EC2 インスタンスタイプを選択することができない場合、Amazon VPC とサブネットを選択するか、作成する必要があります。[Create new VPC (新しい VPC の作成)] または [Create new subnet (新しいサブネットの作成)]、またはその両方を選択します。詳細については、「VPC とサブネット」を参照してください。

  6. [Advanced Details] を展開します。

  7. [ユーザーデータ] の横にある [テキストで] オプションを選択し、次のように入力して、Amazon EC2 インスタンスの作成時に CodeDeploy エージェントをインストールします。

    Amazon Linux および RHEL の場合

    #!/bin/bash yum -y update yum install -y ruby cd /home/ec2-user curl -O https://bucket-name.s3.amazonaws.com/latest/install chmod +x ./install ./install auto

    bucket-name は、リージョン用の CodeDeploy リソースキットファイルが含まれている Amazon S3 バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-nameaws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名」を参照してください。

    Ubuntu Server の場合

    重要

    CodeDeploy エージェントを Ubuntu Server 14.04 にインストールする場合は、3 行目を次のとおりに変更します。

    apt-get -y install ruby2.0

    #!/bin/bash apt-get -y update apt-get -y install ruby apt-get -y install wget cd /home/ubuntu wget https://bucket-name.s3.amazonaws.com/latest/install chmod +x ./install ./install auto

    bucket-name は、リージョン用の CodeDeploy リソースキットファイルが含まれている Amazon S3 バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-nameaws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名」を参照してください。

    Windows Server の場合

    <powershell> New-Item -Path c:\temp -ItemType "directory" -Force powershell.exe -Command Read-S3Object -BucketName bucket-name/latest -Key codedeploy-agent.msi -File c:\temp\codedeploy-agent.msi Start-Process -Wait -FilePath c:\temp\codedeploy-agent.msi -WindowStyle Hidden </powershell>

    bucket-name は、リージョン用の CodeDeploy リソースキットファイルが含まれている Amazon S3 バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-nameaws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名」を参照してください。

  8. このページの残りの項目は変更せず、[次の手順: ストレージの追加] を選択します。

  9. [ステップ 4: ストレージの追加] ページは変更せず、[次の手順: タグの追加] を選択します。

  10. [ステップ 5: タグの追加] ページで、[タグの追加] を選択します。

  11. [キー] ボックスに「Name」と入力します。[] ボックスに「CodeDeployDemo」と入力します。

    重要

    [キー] ボックスと [] ボックスの内容は大文字と小文字が区別されます。

  12. [Next: Configure Security Group] を選択します。

  13. [ステップ 6: セキュリティグループの設定] ページで、[新規セキュリティグループを作成] オプションを選択したままにします。

    デフォルトの SSH ロールは、Amazon Linux、Ubuntu Server、または RHEL を実行する Amazon EC2 インスタンスに対して設定されます。デフォルトの RDP ロールは、Windows Server を実行する Amazon EC2 インスタンスに対して設定されます。

  14. HTTP ポートを開く場合は、[ルールの追加] ボタンを選択し、[タイプ] ドロップダウンリストから、[HTTP] を選択します。Custom 0.0.0.0/0 のデフォルトの Source 値をそのまま使用し、[Review and Launch (確認と起動)] を選択します。

    注記

    本番稼働環境では、[任意の場所 0.0.0.0/0] を指定する代わりに、SSH、RDP、および HTTP ポートへのアクセスを制限することをお勧めします。CodeDeploy は、無制限のポートアクセスを必要とせず、HTTP アクセスを必要としません。詳細については、「Amazon EC2 インスタンスの保護のヒント」を参照してください。

    [汎用 (SSD) から起動する] ダイアログボックスが表示されたら、指示に従って [次へ] を選択します。

  15. [Step 7: Review Instance Launch] ページは変更せず、[Launch] を選択します。

  16. [既存のキーペアの選択または新しいキーペアの作成] ダイアログボックスで、[既存のキーペアの選択] または [新しいキーペアの作成] を選択します。すでに Amazon EC2 インスタンスキーペアを設定している場合は、ここで選択できます。

    Amazon EC2 インスタンスのキーペアがまだない場合は、[新しいキーペアの作成] を選択して、わかりやすい名前を付けます。Amazon EC2 インスタンスのキーペアをコンピュータにダウンロードするには、[キーペアのダウンロード] を選択します。

    重要

    SSH または RDP を使用して、Amazon EC2 インスタンスにアクセスする場合、キーペアが必要です。

  17. [Launch Instances] を選択します。

  18. Amazon EC2 インスタンスの ID を選択します。インスタンスが起動され、すべてのチェックが成功するまで先に進まないでください。

インスタンスで CodeDeploy エージェントが実行されていることを確認するには、「CodeDeploy エージェントの実行の確認」を参照してください。その後に、このページに戻ります。次に、Amazon EC2 インスタンスは CodeDeploy デプロイで使用できるようになります。

Amazon EC2 インスタンス (CLI) を起動します。

CodeDeploy の使用開始」の手順に従って AWS CLI をセットアップして設定し、IAM インスタンスプロファイルを作成します (まだ行っていない場合)。

  1. Windows Server の場合のみ Windows Server を実行する Amazon EC2 インスタンスを作成する場合は、create-security-group コマンドと authorize-security-group-ingress コマンドを呼び出して、RDP アクセス (デフォルトでは許可されない)、または代わりに HTTP アクセスを許可するセキュリティグループを作成します。たとえば、CodeDeployDemo-Windows-Security-Group という名前のセキュリティグループを作成するには、以下のコマンドを一度に 1 つずつ実行します。

    aws ec2 create-security-group --group-name CodeDeployDemo-Windows-Security-Group --description "For launching Windows Server images for use with CodeDeploy"
    aws ec2 authorize-security-group-ingress --group-name CodeDeployDemo-Windows-Security-Group --to-port 3389 --ip-protocol tcp --cidr-ip 0.0.0.0/0 --from-port 3389
    aws ec2 authorize-security-group-ingress --group-name CodeDeployDemo-Windows-Security-Group --to-port 80 --ip-protocol tcp --cidr-ip 0.0.0.0/0 --from-port 80

    注記

    デモンストレーションのため、これらのコマンドは、ポート 3389 を経由して RDP に、またはポート 80 を経由して HTTP に無制限アクセスを許可するセキュリティグループを作成します。ベストプラクティスとして、RDP ポートと HTTP ポートへのアクセスを制限することをお勧めします。CodeDeploy は、無制限のポートアクセスを必要とせず、HTTP アクセスを必要としません。詳細については、「Amazon EC2 インスタンスの保護のヒント」を参照してください。

  2. 開発用マシンで、以下の内容を含むファイルを作成します。ファイル名は、Amazon Linux、Ubuntu Server、または RHEL を実行する Amazon EC2 インスタンスの場合は instance-setup.sh とします。Windows Server を実行する Amazon EC2 インスタンスの場合は instance-setup.txt とします。

    Amazon EC2 インスタンスを作成すると、このスクリプトによって CodeDeploy エージェントが指定の Amazon S3 の場所からダウンロードされて、インスタンスにインストールされます。

    Amazon Linux および RHEL の場合

    Amazon Linux と RHEL の instance-setup.sh の内容は以下のとおりです。

    #!/bin/bash yum -y update yum install -y ruby cd /home/ec2-user curl -O https://bucket-name.s3.amazonaws.com/latest/install chmod +x ./install ./install auto

    bucket-name は、リージョン用の CodeDeploy リソースキットファイルが含まれている Amazon S3 バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-nameaws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名」を参照してください。

    Ubuntu Server の場合

    Ubuntu Server の instance-setup.sh の内容は以下のとおりです。

    重要

    CodeDeploy エージェントを Ubuntu Server 14.04 にインストールする場合は、ファイルの 3 行目を次のとおりに変更します。

    apt-get -y install ruby2.0

    #!/bin/bash apt-get -y update apt-get -y install ruby apt-get -y install wget cd /home/ubuntu wget https://bucket-name.s3.amazonaws.com/latest/install chmod +x ./install ./install auto

    bucket-name は、リージョン用の CodeDeploy リソースキットファイルが含まれている Amazon S3 バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-nameaws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名」を参照してください。

    Windows Server の場合

    Windows Server の instance-setup.txt の内容は以下のとおりです。

    <powershell> New-Item -Path c:\temp -ItemType "directory" -Force powershell.exe -Command Read-S3Object -BucketName bucket-name/latest -Key codedeploy-agent.msi -File c:\temp\codedeploy-agent.msi Start-Process -Wait -FilePath c:\temp\codedeploy-agent.msi -WindowStyle Hidden </powershell>

    bucket-name は、リージョン用の CodeDeploy リソースキットファイルが含まれている Amazon S3 バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-nameaws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名」を参照してください。

  3. instance-setup.sh ファイルまたは instance-setup.txt ファイルを作成した同じディレクトリから run-instances コマンドを呼び出し、Amazon EC2 インスタンスを作成して起動します。

    このコマンドを呼び出す前に、以下を収集する必要があります。

    • インスタンスに使用する Amazon マシンイメージ (AMI) (ami-id) の ID。ID を取得するには、「適切な AMI の検索」を参照してください。

    • 作成する Amazon EC2 インスタンスのタイプ (instance-type) の名前 (t1.micro など)。リストについては、「Amazon EC2 のインスタンスタイプ」を参照してください。

    • リージョンの CodeDeploy エージェントインストールファイルが保存されている Amazon S3 バケットへのアクセス許可を持つ IAM インスタンスプロファイルの名前。

      IAM インスタンスプロファイルの作成方法については、「ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する」を参照してください。

    • Amazon Linux、Ubuntu Server、RHEL を実行する Amazon EC2 インスタンスへの SSH アクセス、または Windows Server を実行する Amazon EC2 インスタンスへの RDP アクセスを許可する Amazon EC2 インスタンスのキーペアの名前 (key-name)。

      重要

      キーペアのファイル拡張子ではなく、キーペア名のみを入力します。たとえば、my-keypair.pem ではなく、my-keypair です。

      キーペア名を見つけるには、Amazon EC2 コンソール (https://console.aws.amazon.com/ec2) を開きます。ナビゲーションペインの [ネットワーク & セキュリティ] の下で、[キーペア] を選択し、リストのキーペア名をメモします。

      キーペアを生成するには、「Amazon EC2 を使用してキーペアを作成する」を参照してください。AWS General Referenceの「リージョンとエンドポイント」に一覧表示されているリージョンのいずれかにキーペアを作成する必要があります。そうしないと、CodeDeploy で Amazon EC2 インスタンスのキーペアを使用できなくなります。

    Amazon Linux、RHEL、および Ubuntu Server の場合

    run-instances コマンドを呼び出し、Amazon Linux、Ubuntu Server、または RHEL を実行する Amazon EC2 インスタンスを起動して、「ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する」で作成した IAM インスタンスプロファイルをアタッチするには、以下の例に従ってください。

    重要

    Be sure to include file:// before the file name. It is required in this command.

    aws ec2 run-instances \ --image-id ami-id \ --key-name key-name \ --user-data file://instance-setup.sh \ --count 1 \ --instance-type instance-type \ --iam-instance-profile Name=iam-instance-profile

    注記

    このコマンドは、ポート 22 を経由した SSH の無制限のアクセス、または、ポート 80 を経由した HTTP など複数のポートへのアクセスを許可する Amazon EC2 インスタンスのデフォルトのセキュリティグループを作成します。ベストプラクティスとして、SSH ポートと HTTP ポートへのアクセスのみを制限することをお勧めします。CodeDeploy は、無制限のポートアクセスを必要とせず、HTTP ポートアクセスを必要としません。詳細については、「Amazon EC2 インスタンスの保護のヒント」を参照してください。

    Windows Server の場合

    run-instances コマンドを呼び出して Windows Server を実行する Amazon EC2 インスタンスを起動し、「ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する」で作成した IAM インスタンスプロファイルをアタッチして、ステップ 1 で作成したセキュリティグループの名前を指定するには、以下の例に従ってください。

    重要

    Be sure to include file:// before the file name. It is required in this command.

    aws ec2 run-instances --image-id ami-id --key-name key-name --user-data file://instance-setup.txt --count 1 --instance-type instance-type --iam-instance-profile Name=iam-instance-profile --security-groups CodeDeploy-Windows-Security-Group

    これらのコマンドは、指定された AMI、キーペア、およびインスタンスタイプと、指定された IAM インスタンスプロファイル持つ単一の Amazon EC2 インスタンスを起動し、指定されたスクリプトを起動時に実行します。

  4. 出力の InstanceID の値を記録します。この値を忘れた場合は、Amazon EC2 インスタンスのキーペアに対して describe-instances コマンドを呼び出すことで、後で取得できます。

    aws ec2 describe-instances --filters "Name=key-name,Values=keyName" --query "Reservations[*].Instances[*].[InstanceId]" --output text

    インスタンス ID を使用して create-tags コマンドを呼び出します。このコマンドで Amazon EC2 インスタンスにタグが付けられ、このタグを後で使用して CodeDeploy がデプロイ時にインスタンスを見つけることができます。次の例で、タグ名は CodeDeployDemo になっていますが、任意の Amazon EC2 インスタンスタグを指定できます。

    aws ec2 create-tags --resources instance-id --tags Key=Name,Value=CodeDeployDemo

    複数のタグを同時にインスタンスに適用できます。例:

    aws ec2 create-tags --resources instance-id --tags Key=Name,Value=testInstance Key=Region,Value=West Key=Environment,Value=Beta

    Amazon EC2 インスタンスが起動され、すべてのチェックが成功したことを確認するには、インスタンス ID を使用して describe-instance-status コマンドを呼び出します。

    aws ec2 describe-instance-status --instance-ids instance-id --query "InstanceStatuses[*].InstanceStatus.[Status]" --output text

インスタンスが起動され、すべてのチェックが成功すると、ok が出力に表示されます。

インスタンスで CodeDeploy エージェントが実行されていることを確認するには、「CodeDeploy エージェントの実行の確認」を参照してください。その後に、このページに戻ります。次に、Amazon EC2 インスタンスは CodeDeploy デプロイで使用できるようになります。