AWS Cloud9
ユーザーガイド

AWS Cloud9 の環境から AWS のサービスを呼び出す

AWS Cloud9 開発環境 から AWS のサービスを呼び出すことができます。たとえば、以下のことが可能です。

  • Amazon Simple Storage Service (Amazon S3) バケットにデータをアップロードする/バケットからデータをダウンロードする。

  • Amazon Simple Notification Service (Amazon SNS) トピックからブロードキャスト通知を送信する。

  • Amazon DynamoDB (DynamoDB) データベースのデータの読み取り/書き込みを行う。

環境 から AWS のサービスをいくつかの方法で呼び出すことができます。たとえば、AWS Command Line Interface (AWS CLI) または aws-shell を使用して、ターミナルセッションからコマンドを実行できます。また、JavaScript、Python、Ruby、PHP、Go、C++ などのプログラミング言語に AWS SDK を使用して、環境 内で実行するコードから AWS のサービスを呼び出すこともできます。詳細については、「AWS CLI および aws-shell のサンプル」、AWS Command Line Interface ユーザーガイド、および「AWS SDK」を参照してください。

AWS CLI、aws-shell、またはコードが AWS のサービスを呼び出すたびに、AWS CLI、aws-shell、またはコードで、コールと一緒に AWS アクセス認証情報のセットを指定する必要があります。これらの認証情報は、呼び出し元にその呼び出しを行う適切なアクセス許可があるかどうかを判別します。認証情報に適切なアクセス権限がない場合は、呼び出しは失敗します。

環境 に認証情報を提供するには、いくつかの方法があります。次の表は、いくつかのアプローチについて説明します。

環境 type アプローチ

EC2

AWS 管理の一時認証情報 を使用します。

このアプローチは EC2 環境 にお勧めします。AWS 管理の一時認証情報 は、AWS セキュリティのベストプラクティスに従い、ユーザーに代わって EC2 環境 の AWS アクセス認証情報を管理します。

EC2 環境を使用している場合は、このトピックの残りの部分をスキップできます。これは、環境内に AWS 管理の一時認証情報が設定済みであるためです。

詳細については、「AWS 管理の一時認証情報」を参照してください。

EC2

IAM インスタンスプロファイルをインスタンスにアタッチします。

この方法は、何らかの理由で AWS 管理の一時認証情報 を使用できない場合にのみ使用してください。AWS 管理の一時認証情報 と同様に、インスタンスプロファイルは AWS アクセス認証情報をユーザーに代わって管理します。ただし、インスタンスプロファイルを作成して管理し、Amazon EC2 インスタンスに直接アタッチする必要があります。

手順については、「インスタンスプロファイルを作成して使用し一時認証情報を管理する」を参照してください。

EC2 または SSH

永続的な AWS アクセス認証情報を 環境 内に保存します。

このアプローチは、一時的な AWS アクセス認証情報を使用するよりも安全性が低くなります。ただし、SSH 環境 で唯一サポートされているアプローチです。

手順については、「環境で永続的認証情報を作成して保存する」を参照してください。

EC2 または SSH

永続的な AWS アクセス認証情報をコードに直接挿入します。

AWS セキュリティのベストプラクティスに従わないため、このアプローチは推奨しません。

このアプローチは推奨しないため、このトピックでは説明しません。

インスタンスプロファイルを作成して使用し一時認証情報を管理する

注記

AWS Cloud9 SSH 開発環境 にこの手順を使用することはできません。代わりに、「環境で永続的認証情報を作成して保存する」までスキップしてください。

インスタンスプロファイルの代わりに AWS 管理の一時認証情報 を使用することをお勧めします。何らかの理由で AWS 管理の一時認証情報 を使用できない場合にのみ、以下の手順に従ってください。詳細については、「AWS 管理の一時認証情報」を参照してください。

この手順では、IAM と Amazon EC2 を使用して IAM インスタンスプロファイルを作成し、これを 環境 に接続する Amazon EC2 インスタンスに接続します。このインスタンスプロファイルは、ユーザーの代わりに一時的な認証情報を管理します。この手順では、AWS Cloud9 で 環境 が作成済みであるものとします。環境 を作成するには、「環境を作成する」を参照してください。

これらのタスクは、IAM と Amazon EC2 コンソール、または AWS コマンドラインインターフェイス (AWS CLI) を使用して完了できます。

IAM コンソールを使用してインスタンスプロファイルを作成する

注記

インスタンスプロファイルを含む IAM ロールがすでにある場合は、この手順をスキップして「Amazon EC2 コンソールを使用してインスタンスプロファイルをインスタンスにアタッチする」に進みます。

  1. IAM コンソール (https://console.aws.amazon.com/iam) にサインインします。

    このステップでは、AWS アカウントの IAM 管理者ユーザーの認証情報を使用してサインインすることをお勧めします。これを実行できない場合は、AWS アカウントの管理者に確認してください。

  2. ナビゲーションバーで [ロール] を選択します。

    注記

    IAM コンソールを使用してインスタンスプロファイルを単独で作成することはできません。インスタンスプロファイルを含む IAM ロールを作成する必要があります。

  3. [ロールの作成] を選択します。

  4. [Select type of trusted entity (信頼されたエンティティの種類を選択)] ページで [AWS サービス] を選択した状態にして、[このロールを使用するサービスを選択] で [EC2] を選択します。

  5. [ユースケースの選択] で、[EC2] を選択します。

  6. [Next: Permissions (次へ: アクセス許可)] を選択します。

  7. [Attach permissions policies (アクセス権限ポリシーをアタッチする)] ページで、ポリシーのリストの [AdministratorAccess] の横のボックスを選択して、[次へ: 確認] を選択します。

    注記

    [AdministratorAccess] ポリシーは、AWS アカウント全体ですべての AWS アクションおよびリソースへのアクセスを無制限に許可します。これは実験目的でのみ使用してください。詳細については、『IAM ユーザーガイド』の「IAM ポリシー」を参照してください。

  8. [確認] ページの [ロール名] に、ロールの名前を入力します (例: my-demo-cloud9-instance-profile)。

  9. [ロールの作成] を選択します。

Amazon EC2 コンソールを使用してインスタンスプロファイルをインスタンスにアタッチする」に進みます。

AWS CLI を使用してインスタンスプロファイルを作成する

注記

インスタンスプロファイルを含む IAM ロールがすでにある場合は、この手順をスキップして「AWS CLI を使用してインスタンスプロファイルをインスタンスにアタッチする」に進みます。

このトピックでは、AWS アカウントの IAM 管理者ユーザーの認証情報を使用して AWS CLI を設定することをお勧めします。これを実行できない場合は、AWS アカウントの管理者に確認してください。

注記

AWS 管理の一時認証情報 を使用している場合は、AWS Cloud9 IDE のターミナルセッションを使用して、このセクションのコマンドの一部またはすべてを実行することはできません。AWS のセキュリティに関するベストプラクティスに対応するため、AWS 管理の一時認証情報 はいくつかのコマンドを実行することができません。代わりに、AWS Command Line Interface (AWS CLI) の別のインストールからこれらのコマンドを実行できます。

  1. インスタンスプロファイルの必須および IAM ロールに対する AWS の信頼関係を定義します。これを行うには、次の内容のファイルを作成して保存します (たとえば、my-demo-cloud9-instance-profile-role-trust.json)。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. ターミナルまたはコマンドプロンプトを使用して、このファイルを保存したディレクトリに切り替えます。

  3. インスタンスプロファイルの IAM ロールを作成します。これを行うには、IAM create-role コマンドを実行します。次のように、新しい IAM ロールの名前 (例: my-demo-cloud9-instance-profile-role) と、保存したファイルの名前を指定します。

    aws iam create-role --role-name my-demo-cloud9-instance-profile-role --assume-role-policy-document file://my-demo-cloud9-instance-profile-role-trust.json
  4. AWS アクセス権限をインスタンスプロファイルの IAM ロールにアタッチします。これを行うには、IAM attach-role-policy コマンドを実行します。次のように、既存の IAM ロールの名前と、AWS 管理ポリシーの Amazon リソースネーム (ARN) として AdministratorAccess を指定します。

    aws iam attach-role-policy --role-name my-demo-cloud9-instance-profile-role --policy-arn arn:aws:iam::aws:policy/AdministratorAccess

    注記

    [AdministratorAccess] ポリシーは、AWS アカウント全体ですべての AWS アクションおよびリソースへのアクセスを無制限に許可します。これは実験目的でのみ使用してください。詳細については、『IAM ユーザーガイド』の「IAM ポリシー」を参照してください。

  5. インスタンスプロファイルを作成します。これを行うには、新しい IAM インスタンスプロファイルの名前を指定する IAM create-instance-profile コマンド (たとえば my-demo-cloud9-instance-profile) を実行します。

    aws iam create-instance-profile --instance-profile-name my-demo-cloud9-instance-profile
  6. インスタンスプロファイルに IAM ロールをアタッチします。これを行うには、IAM add-role-to-instance-profile コマンドを実行します。次のように、既存の IAM ロールとインスタンスプロファイルの名前を指定します。

    aws iam add-role-to-instance-profile --role-name my-demo-cloud9-instance-profile-role --instance-profile-name my-demo-cloud9-instance-profile

「AWS CLI を使用してインスタンスプロファイルを作成する」に進みます。

Amazon EC2 コンソールを使用してインスタンスプロファイルをインスタンスにアタッチする

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2) にサインインします。

    このステップでは、AWS アカウントの IAM 管理者ユーザーの認証情報を使用してサインインすることをお勧めします。これを実行できない場合は、AWS アカウントの管理者に確認してください。

  2. ナビゲーションバーで、環境 と一致する AWS リージョンがリージョンセレクターに表示されていることを確認します。たとえば、米国東部 (オハイオ) リージョンで 環境 を作成した場合は、リージョンセレクターでも [米国東部 (オハイオ)] を選択します。

  3. [実行中のインスタンス] リンク、またはナビゲーションペインで [インスタンス] を展開して、[インスタンス] を選択します。

  4. インスタンスのリストで、環境 名を含む [名前] を持つインスタンスを選択します。たとえば、環境 名が my-demo-environment の場合は、[my-demo-environment] を含む [名前] を持つインスタンスを選択します。

  5. [アクション]、[インスタンスの設定]、[IAM ロールの割り当て/置換] の順に選択します。

    注記

    インスタンスにロールをアタッチしていても、ロールにはインスタンスプロファイルが含まれています。

  6. [IAM ロールの割り当て/置換] ページの [IAM ロール] で前の手順で作成したロールの名前を選択し、[適用] を選択します。

  7. 環境 に戻り、AWS CLI を使用して aws configure コマンドまたは aws-shell を実行して configure コマンドを実行します。[AWS Access Key ID (AWS アクセスキー ID)] または [AWS Secret Access Key (AWS シークレットアクセスキー)] には値を指定しないでください (これらのプロンプトの後に Enter キーを押します)。[Default region name (デフォルトのリージョン名)] では、自分または AWS リソースが配置されているリージョンに最も近い AWS リージョンを指定します。たとえば、米国東部 (オハイオ) リージョンの場合は、us-east-2 を使用します。リージョンのリストについては、『アマゾン ウェブ サービス全般のリファレンス』の「AWS リージョンとエンドポイント」を参照してください。オプションで、[Default output format (デフォルト出力形式)] の値を指定します (json など)。

環境 から AWS のサービスを呼び出すことができるようになりました。AWS CLI、aws-shell、またはその両方を使用して AWS のサービスを呼び出すには、「AWS CLI および aws-shell のサンプル」を参照してください。コードから AWS のサービスを呼び出すには、他のチュートリアルとサンプルを参照してください。

AWS CLI を使用してインスタンスプロファイルをインスタンスにアタッチする

注記

AWS 管理の一時認証情報 を使用している場合は、AWS Cloud9 IDE のターミナルセッションを使用して、このセクションのコマンドの一部またはすべてを実行することはできません。AWS のセキュリティに関するベストプラクティスに対応するため、AWS 管理の一時認証情報 はいくつかのコマンドを実行することができません。代わりに、AWS Command Line Interface (AWS CLI) の別のインストールからこれらのコマンドを実行できます。

  1. Amazon EC2 associate-iam-instance-profile コマンドを実行します。次のように、インスタンスプロファイルの名前、環境 の Amazon EC2 インスタンスの ID と AWS リージョン ID を指定します。

    aws ec2 associate-iam-instance-profile --iam-instance-profile Name=my-demo-cloud9-instance-profile --region us-east-2 --instance-id i-12a3b45678cdef9a0

    上記のコマンドでは、us-east-2 をインスタンスの AWS リージョン ID で置き換え、i-12a3b45678cdef9a0 をインスタンス ID で置き換えます。

    インスタンスの ID を取得するには、次のように Amazon EC2 describe-instances コマンドを実行できます。環境 の名前と AWS リージョン ID を指定します。

    aws ec2 describe-instances --region us-east-2 --filters Name=tag:Name,Values=*my-environment* --query "Reservations[*].Instances[*].InstanceId" --output text

    上記のコマンドでは、us-east-2 をインスタンスの AWS リージョン ID で置き換え、my-environment を 環境 の名前で置き換えます。

  2. 環境 に戻り、AWS CLI を使用して aws configure コマンドまたは aws-shell を実行して configure コマンドを実行します。[AWS Access Key ID (AWS アクセスキー ID)] または [AWS Secret Access Key (AWS シークレットアクセスキー)] には値を指定しないでください (これらのプロンプトの後に Enter キーを押します)。[Default region name (デフォルトのリージョン名)] では、自分または AWS リソースが配置されているリージョンに最も近い AWS リージョンを指定します。たとえば、米国東部 (オハイオ) リージョンの場合は、us-east-2 を使用します。リージョンのリストについては、『アマゾン ウェブ サービス全般のリファレンス』の「AWS リージョンとエンドポイント」を参照してください。オプションで、[Default output format (デフォルト出力形式)] の値を指定します (json など)。

環境 から AWS のサービスを呼び出すことができるようになりました。AWS CLI、aws-shell、またはその両方を使用して AWS のサービスを呼び出すには、「AWS CLI および aws-shell のサンプル」を参照してください。コードから AWS のサービスを呼び出すには、他のチュートリアルとサンプルを参照してください。

環境 に永続的アクセス認証情報を作成して保存する

注記

AWS Cloud9 EC2 開発環境 を使用している場合は、AWS の永続的アクセス認証情報の代わりに AWS 管理の一時認証情報 を使用することをお勧めします。AWS 管理の一時認証情報 を使用するには、「AWS 管理の一時認証情報」を参照してください。

このセクションでは、AWS Identity and Access Management (IAM) を使用して、AWS CLI、aws-shell、またはコードで AWS のサービスを呼び出すときに使用できる永続的認証情報のセットを生成します。このセットには、AWS アカウントのユーザーに固有の AWS アクセスキー ID と AWS シークレットアクセスキーが含まれています。既に AWS アクセスキー ID と AWS シークレットアクセスキーがある場合は、それらの認証情報を書き留めて、「環境で永続的認証情報を作成して保存する」に進みます。

永続的認証情報のセットは、IAM コンソールまたは AWS CLI を使用して作成できます。

コンソールで永続的なアクセス認証情報を作成する

  1. IAM コンソール (https://console.aws.amazon.com/iam) にサインインします。

    このステップでは、AWS アカウントの IAM 管理者ユーザーの認証情報を使用してサインインすることをお勧めします。これを実行できない場合は、AWS アカウントの管理者に確認してください。

  2. ナビゲーションバーで [ユーザー] を選択します。

  3. ユーザーのリストで、チームセットアップで作成または特定したユーザーの名前を選択します。

  4. [Security credentials] タブを選択します。

  5. [アクセスキー] で、[アクセスキーの作成] を選択します。

  6. [アクセスキーの作成] ページで [表示] を選択し、[アクセスキー ID] と [シークレットアクセスキー] の値を書き留めます。[Download .csv file (csv ファイルのダウンロード)] も選択し、これらの認証情報を安全な場所に保存することをお勧めします。

環境で永続的認証情報を作成して保存する」に進みます。

AWS CLI で永続的アクセス認証情報を作成する

注記

このセクションでは、AWS アカウントの IAM 管理者ユーザーの認証情報を使用して AWS CLI を設定することをお勧めします。これを実行できない場合は、AWS アカウントの管理者に確認してください。

注記

AWS 管理の一時認証情報 を使用している場合は、AWS Cloud9 IDE のターミナルセッションを使用して、このセクションのコマンドの一部またはすべてを実行することはできません。AWS のセキュリティに関するベストプラクティスに対応するため、AWS 管理の一時認証情報 はいくつかのコマンドを実行することができません。代わりに、AWS Command Line Interface (AWS CLI) の別のインストールからこれらのコマンドを実行できます。

IAM create-access-key コマンドを実行して、ユーザーの新しい AWS アクセスキーと対応する AWS シークレットアクセスキーを作成します。

aws iam create-access-key --user-name MyUser

前述のコマンドでは、MyUser をユーザーの名前に置き換えます。

表示される AccessKeyIdSecretAccessKey の値を安全な場所に保存します。IAM create-access-key コマンドを実行した後は、これが AWS CLI を使用してユーザーの AWS シークレットアクセスキーを表示できる唯一の機会です。必要に応じて、後でユーザーの新しい AWS シークレットアクセスキーを生成するには、『IAM ユーザーガイド』の「アクセスキーの作成、修正、および表示 (API、CLI、PowerShell)」を参照してください。

環境 に永続的アクセス認証情報を保存する

この手順では、AWS Cloud9 IDE を使用して永続的な AWS アクセス認証情報を 環境 に保存します。この手順では、AWS Cloud9 に 環境 を作成し、環境 を開いて、AWS Cloud9 IDE をウェブブラウザに表示しているものとします。詳細については、「環境を作成する」と「環境を開く」を参照してください。

注記

次の手順では、環境変数を使用して永続的なアクセス認証情報を保存する方法を示します。AWS CLI または aws-shell を 環境 にインストール済みである場合は、AWS CLI の aws configure コマンドを使用して、または aws-shell の configure コマンドを使用して、永続的アクセス認証情報を保存できます。手順については、『AWS Command Line Interface ユーザーガイド』の「クイック設定」を参照してください。

  1. 環境 が開いている状態で、AWS Cloud9 IDE で新しいターミナルセッションを起動します (まだ起動していない場合)。新しいターミナルセッションを開始するには、メニューバーで、[Window (ウィンドウ)]、[New Terminal (新しいターミナル)] の順に選択します。

  2. 一度に 1 つのコマンドを実行して、永続的なアクセス認証情報を表すローカル環境変数を設定します。これらのコマンドで、AWS_ACCESS_KEY_ID: の後に AWS アクセスキー ID を入力します。AWS_SECRET_ACCESS_KEY の後に AWS シークレットアクセスキーを入力します。AWS_DEFAULT_REGION_ID の後に、最も近い AWS リージョンに関連付けられた AWS リージョン識別子 (または好みの AWS リージョン) を入力します。利用可能な識別子の一覧については、『アマゾン ウェブ サービス全般のリファレンス』の「AWS リージョンとエンドポイント」を参照してください。たとえば、米国東部 (オハイオ) リージョンの場合は、us-east-2 を使用します。

    export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= export AWS_DEFAULT_REGION=
  3. 前述の環境変数は、ターミナルセッションにおいてのみ有効になります。これらの環境変数をターミナルセッション間で利用できるようにするには、以下のように、それらをユーザー環境変数としてシェルプロファイルファイルに追加する必要があります。

    1. IDE の [Environment (環境)] ウィンドウで歯車アイコンを選択し、[Show Home in Favorites (お気に入りのホームを表示する)] を選択します。このステップを繰り返して、[Show Hidden Files (隠しファイルを表示する)] も同様に選択します。

    2. ~/.bashrc ファイルを開きます。

    3. ファイルの末尾に次のコードを入力するか貼り付けます。これらのコマンドで、AWS_ACCESS_KEY_ID: の後に AWS アクセスキー ID を入力します。AWS_SECRET_ACCESS_KEY の後に AWS シークレットアクセスキーを入力します。AWS_DEFAULT_REGION_ID の後に、最も近い AWS リージョンに関連付けられた AWS リージョン識別子 (または好みの AWS リージョン) を入力します。利用可能な識別子の一覧については、『アマゾン ウェブ サービス全般のリファレンス』の「AWS リージョンとエンドポイント」を参照してください。たとえば、米国東部 (オハイオ) リージョンの場合は、us-east-2 を使用します。

      export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= export AWS_DEFAULT_REGION=
    4. ファイルを保存します。

    5. ~/.bashrc ファイルにこれらの新しい環境変数をロードします。

      . ~/.bashrc

環境 から AWS のサービスを呼び出すことができるようになりました。AWS CLI または aws-shell を使用して AWS のサービスを呼び出すには、「AWS CLI および aws-shell のサンプル」を参照してください。コードから AWS のサービスを呼び出すには、他のチュートリアルとサンプルを参照してください。