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 アクセス認証情報のセットを指定する必要があります。これらの認証情報は、呼び出し元にその呼び出しを行う適切なアクセス許可があるかどうかを判別します。認証情報に適切な許可がない場合は、呼び出しは失敗します。
環境に認証情報を提供するには、いくつかの方法があります。次の表は、いくつかのアプローチについて説明します。
環境タイプ | アプローチ |
---|---|
EC2 |
AWS マネージド一時認証情報。 このアプローチは EC2 環境にお勧めします。AWS マネージド一時認証情報は、 ユーザーに代わって、EC2 環境で AWS アクセス認証情報を管理しながら、次の 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 コンソールを使用してインスタンスプロファイルをインスタンスに添付する」に進みます。
-
IAM コンソール (https://console.aws.amazon.com/iam/
) にサインインします。 このステップでは、AWS アカウントの IAM 管理者レベルの認証情報を使用してサインインすることをお勧めします。これを実行できない場合は、AWS アカウントの管理者に確認してください。
-
ナビゲーションバーで [ロール]を選択します。
注記 IAM コンソールを使用してインスタンスプロファイルを単独で作成することはできません。インスタンスプロファイルを含む IAM ロールを作成する必要があります。
-
[ロールの作成] を選択します。
-
「Select type of trusted entity (信頼されたエンティティの種類を選択)」ページで [AWS サービス]をすでに選択した状態にして、[このロールを使用するサービスを選択]で [EC2]を選択します。
-
[ユースケースの選択]で、[EC2]を選択します。
-
[Next: Permissions (次へ: アクセス許可)] を選択します。
-
[Attach permissions policies (アクセス権限ポリシーをアタッチする)]ページで、ポリシーのリストの[AdministratorAccess]の横のボックスを選択して、[次へ: 確認]を選択します。
注記 AdministratorAccess ポリシーは、AWS アカウント全体ですべての AWS アクションおよびリソースへのアクセスを無制限に許可します。これは実験目的でのみ使用してください。詳細については、IAM ユーザーガイド の「IAM ポリシー」を参照してください。
-
「確認」ページの [ロール名]に、ロールの名前を入力します (例:
my-demo-cloud9-instance-profile
)。 -
[Create Role] を選択します。
「Amazon EC2 コンソールを使用してインスタンスプロファイルをインスタンスにアタッチする」に進みます。
AWS CLI を使用してインスタンスプロファイルを作成する
インスタンスプロファイルを含む IAM ロールがすでにある場合は、スキップして、AWS CLI を伴うインスタンスにインスタンスプロファイルを添付するに進みます。
このトピックでは、AWS アカウントの IAM 管理者レベルの認証情報を使用して AWS CLI を設定することをお勧めします。これを実行できない場合は、AWS アカウント管理者にお問い合わせください。
AWS マネージド一時認証情報を使用している場合は、AWS Cloud9 IDE 内のターミナルセッションを使用して、このセクションのコマンドの一部またはすべてを実行することはできません。AWS のセキュリティに関するベストプラクティスに対応するため、AWS マネージド一時認証情報は一部のコマンドの実行を許可しません。代わりに、AWS Command Line Interface (AWS CLI) の別のインストールから、これらのコマンドを実行できます。
-
インスタンスプロファイルの必須および 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" } ] }
-
ターミナルまたはコマンドプロンプトを使用して、このファイルを保存したディレクトリに切り替えます。
-
インスタンスプロファイルの 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
-
AWS アクセス許可をインスタンスプロファイル IAM ロールに を添付します。これを行うには、IAM
attach-role-policy
コマンドを実行します。次のように、既存の IAM ロールの名前と、AdministratorAccess
という名のAWS マネージドポリシーの Amazon リソースネーム (ARN) を指定します。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 ポリシー」を参照してください。
-
インスタンスプロファイルを作成します。これを行うには、新しい IAM インスタンスプロファイルの名前を指定する IAM
create-instance-profile
コマンド (たとえばmy-demo-cloud9-instance-profile
) を実行します。aws iam create-instance-profile --instance-profile-name my-demo-cloud9-instance-profile
-
インスタンスプロファイルに IAM ロールを添付します。これを行うには、既存の IAM ロールとインスタンスプロファイルの名を指定する IAM
add-role-to-instance-profile
を実行します。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 コンソールを使用してインスタンスプロファイルをインスタンスに添付する
-
https://console.aws.amazon.com/ec2/
でAmazon EC2 コンソールにサインインします。 このステップでは、AWS アカウントの IAM 管理者の認証情報を使用してサインインすることをお勧めします。これを実行できない場合は、AWS アカウント管理者にお問い合わせください。
-
ナビゲーションバーで、環境用と一致する AWS リージョンがリージョンセレクターに表示されていることを確認します。例えば、米国東部 (オハイオ) リージョンで環境を作成した場合は、このリージョンセレクターでも米国東部 (オハイオ)を選択します。
-
[実行中のインスタンス]リンク、またはナビゲーションペインで [インスタンス]を展開して、[インスタンス]を選択します。
-
インスタンスのリストで、環境名を含む [名前]を持つインスタンスを選択します。たとえば、環境名が
my-demo-environment
の場合は、my-demo-environmentを含む[名前]を持つインスタンスを選択します。 -
[アクション] メニューで、[セキュリティ]、[IAM ロールの変更] の順に選択します。
注記 インスタンスにロールをアタッチしていても、ロールにはインスタンスプロファイルが含まれています。
-
[IAM ロールの変更] ページの [IAM ロール] で、確認したロール、または前の手順で作成したロールの名前を選択し、[適用] を選択します。
-
環境に戻り、AWS CLI を使用して
aws configure
コマンドまたは aws-shell を実行してconfigure
コマンドを実行します。[AWS アクセスキー ID]または [AWSシークレットアクセスキー]には値を指定しないでください (これらのプロンプトの後にEnter
を押します)。[デフォルトのリージョン名]では、自分または AWS リソースが配置されているリージョンに最も近い AWS リージョンを指定します。たとえば、米国東部 (オハイオ) リージョンの場合は、us-east-2
を使用します。リージョンのリストについては、Amazon Web Services の全般のリファレンスの「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) の別のインストールから、これらのコマンドを実行できます。
-
Amazon EC2
associate-iam-instance-profile
cコマンドを実行して、インスタンスプロファイルの名前と ID、環境の Amazon EC2 インスタンスの 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
を環境の名前で置き換えます。 -
環境に戻り、AWS CLI を使用して
aws configure
コマンドまたは aws-shell を実行してconfigure
コマンドを実行します。[AWS アクセスキー ID]または [AWSシークレットアクセスキー]には値を指定しないでください (これらのプロンプトの後にEnter
を押します)。[デフォルトのリージョン名]では、自分または AWS リソースが配置されているリージョンに最も近い AWS リージョンを指定します。たとえば、米国東部 (オハイオ) リージョンの場合は、us-east-2
を使用します。リージョンのリストについては、Amazon Web Services の全般のリファレンスの「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、aws-shell、または AWS CLI サービスを呼び出すときにコードが使用できる永続的認証情報のセットを生成します。このセットには、AWS アカウントのユーザーに固有の AWS アクセスキー ID と AWS シークレットアクセスキーが含まれています。既に AWS アクセスキー ID と AWS シークレットアクセスキーがある場合は、それらの認証情報を書き留めて、「環境で永続的アクセス認証情報を保存する」に進みます。
永続的認証情報のセットは、IAM コンソールまたは AWS CLI を使用して作成できます。
コンソールで永続的なアクセス認証情報を作成する
-
IAM コンソール (https://console.aws.amazon.com/iam/
) にサインインします。 このステップでは、AWS アカウントの IAM 管理者の認証情報を使用してサインインすることをお勧めします。これを実行できない場合は、AWS アカウントの管理者に確認してください。
-
ナビゲーションバーで [ユーザー]を選択します。
-
ユーザーのリストで、チームセットアップで作成または特定したユーザーの名前を選択します。
-
[Security credentials]タブを選択します。
-
[アクセスキー]で、[アクセスキーの作成]を選択します。
-
「アクセスキーの作成」ページで [表示]を選択し、[アクセスキー ID]と[シークレットアクセスキー]の値を書き留めます。[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
をユーザーの名前に置き換えます。
表示される AccessKeyId
と SecretAccessKey
の値を安全な場所に保存します。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 ユーザーガイドの「クイック設定」を参照してください。
-
環境が開いている状態で、AWS Cloud9 IDE で新しいターミナルセッションをスタートします (まだスタートしていない場合)。新しいターミナルセッションを開始するには、メニューバーで、[Window (ウィンドウ)]、[New Terminal (新しいターミナル)]の順に選択します。
-
一度に 1 つのコマンドを実行して、永続的なアクセス認証情報を表すローカル環境変数を設定します。これらのコマンドで、
AWS_ACCESS_KEY_ID:
の後に AWS アクセスキー ID を入力します。AWS_SECRET_ACCESS_KEY
の後に AWS シークレットアクセスキーを入力します。AWS_DEFAULT_REGION_ID
の後に、最も近い AWS リージョンに関連付けられた AWS リージョン識別子 (または好みの AWS リージョン) を入力します。利用可能な識別子については、「Amazon Web Services全般的なリファレンス」でAWSリージョンおよびエンドポイントを参照してください。たとえば、米国東部 (オハイオ) リージョンの場合は、us-east-2
を使用します。export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= export AWS_DEFAULT_REGION=
-
前述の環境変数は、ターミナルセッションにおいてのみ有効になります。これらの環境変数をターミナルセッション間で利用できるようにするには、以下のように、それらをユーザー環境変数としてシェルプロファイルファイルに追加する必要があります。
-
IDE の[Environment (環境)]ウィンドウで歯車アイコンを選択し、[Show Home in Favorites (お気に入りのホームを表示する)]を選択します。このステップを繰り返して、[Show Hidden Files (隠しファイルを表示する)]も同様に選択します。
-
~/.bashrc
ファイルを開きます。 -
ファイルの末尾に次のコードを入力するか貼り付けます。これらのコマンドで、
AWS_ACCESS_KEY_ID:
の後に AWS アクセスキー ID を入力します。AWS_SECRET_ACCESS_KEY
の後に AWS シークレットアクセスキーを入力します。AWS_DEFAULT_REGION_ID
の後に、最も近い AWS リージョンに関連付けられた AWS リージョン識別子 (または好みの AWS リージョン) を入力します。利用可能な識別子については、「Amazon Web Services全般的なリファレンス」でAWSリージョンおよびエンドポイントを参照してください。たとえば、米国東部 (オハイオ) リージョンの場合は、us-east-2
を使用します。export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= export AWS_DEFAULT_REGION=
-
ファイルを保存します。
-
~/.bashrc
ファイルにこれらの新しい環境変数をロードします。. ~/.bashrc
-
環境から AWS のサービスを呼び出すことがスタートできるようになりました。AWS CLI または aws-shell を使用して AWS のサービスを呼び出すには、AWS CLI および aws-shell のサンプルを参照してください。コードから AWS のサービスを呼び出すには、他のチュートリアルとサンプルを参照してください。