AWS Cloud9 は、新規顧客には利用できなくなりました。 AWS Cloud9 の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細はこちら
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
EC2 環境用に作成された「no-ingress EC2 インスタンス」により AWS Cloud9 、 はそのインスタンスでインバウンドポートを開くことなく Amazon EC2 インスタンスに接続できます。コンソール、コマンドラインインターフェイス、または AWS CloudFormation スタックを使って EC2 環境を作成するときに、no-ingress オプションを選択できます。コンソールまたはコマンドラインインターフェイスを使用して環境を作成する方法の詳細については、「ステップ 1: 環境を作成する」を参照してください。
重要
Systems Manager Session Manager 使って EC2 インスタンスへの接続を管理する場合、追加料金は発生しません。
コンソールの [Create environment] (環境の作成) ページで環境タイプを選択するときに、インバウンド接続を必要とする新しい EC2 インスタンスを選択するか、次を必要としない新しい no-ingress EC2 インスタンスを選択できます。
-
新しい EC2 インスタンス — この設定の場合、インスタンスのセキュリティグループには、着信ネットワークトラフィックを許可するルールがあります。着信ネットワークトラフィックはAWS Cloud9 接続のため承認された IP アドレスに制限されています。オープンインバウンドポートを使用すると AWS Cloud9 、 は SSH 経由でインスタンスに接続できます。 AWS Systems Manager Session Manager を使用する場合は、インバウンドポートを開かずに (イングレスなしで)、SSM を介して Amazon EC2 インスタンスにアクセスできます。この方法は、新しい Amazon EC2 インスタンスでのみ使用できます。詳細については、「EC2 環境でSystems Manager を使用する利点」を参照してください。
-
既存のコンピューティング — この設定の場合、SSH ログインの詳細を必要とする既存の Amazon EC2 インスタンスにアクセスします。このインスタンスにはインバウンドセキュリティグループルールが必要です。このオプションを使用する場合は、サービスロールが自動的に作成されます。サービスロールの名前は、設定画面の下部にある注記で確認できます。
AWS CLI を使用して環境を作成する場合、create-environment-ec2
コマンドを呼び出す時に、--connection-type CONNECT_SSM
オプションを設定して、no-ingress EC2 インスタンスを設定できます。必要なサービスロールとインスタンスプロファイルの作成に関する詳細については、「を使用した Systems Manager のインスタンスプロファイルの管理 AWS CLI」を参照してください。
no-ingress EC2 インスタンスを使用する環境の作成が完了したら、以下を確認します。
-
Systems Manager Session Manager には、ユーザーに代わって EC2 インスタンスでアクションを実行する許可がおりています。詳細については、「Systems Manager 許可の管理」を参照してください。
-
AWS Cloud9 ユーザーは Session Manager によって管理されるインスタンスにアクセスできます。詳細については、「Session Manager によって管理されているインスタンスへのアクセスをユーザーに与える」を参照してください。
EC2 環境でSystems Manager を使用する利点
Session Manager が AWS Cloud9 とその EC2 インスタンス間の安全な接続を処理できるようにするには、次の 2 つの主な利点があります。
-
インスタンスのインバウンドポートを開く必要がない
-
パブリックサブネットまたはプライベートサブネットでインスタンスを起動するオプション
AWS Cloud9 とその EC2 インスタンス間の安全な接続は、Session Manager によって処理されます。Session Manager は、フルマネージド Systems Manager 機能であり AWS Cloud9 、インバウンドポートを開くことなく が EC2 インスタンスに接続できるようにします。
重要
no-ingress 接続に Systems Manager を使用するオプションは、現在、新しい EC2 環境を作成する場合にのみ使用できます。
Session Manager セッションがスタートすると、ターゲットインスタンスへの接続が行われます。接続を確立すると、環境は Systems Manager サービスを通じてインスタンスと対話できるようになります。Systems Manager サービスは、Systems Manager Agent (SSM Agent) を通じてインスタンスと通信を行います。
デフォルトでは、SSM Agent は、EC2 環境によって使用されるすべてのインスタンスにインストールされます。
Systems Manager 許可の管理
デフォルトでは、Systems Manager には、EC2 インスタンス上でアクションを実行する許可がありません。アクセスは AWS Identity and Access Management (IAM) インスタンスプロファイルを通じて提供されます。(インスタンスプロファイルは、起動時に EC2 インスタンスに IAM ロール情報を渡すコンテナです。)
AWS Cloud9 コンソールを使用して no-ingress EC2 インスタンスを作成すると、サービスロール (AWSCloud9SSMAccessRole
) と IAM インスタンスプロファイル (AWSCloud9SSMInstanceProfile
) の両方が自動的に作成されます。(IAM マネジメントコンソールで AWSCloud9SSMAccessRole
を表示できます。 インスタンスプロファイルは IAM コンソールに表示されません)。
重要
で初めて no-ingress EC2 環境を作成する場合は AWS CLI、必要なサービスロールとインスタンスプロファイルを明示的に定義する必要があります。詳細については、「を使用した Systems Manager のインスタンスプロファイルの管理 AWS CLI」を参照してください。
重要
AWS Cloud9 環境を作成し、 AWSCloud9Administrator
または AWSCloud9User
ポリシーがアタッチされた Amazon EC2 Systems Manager を使用している場合は、特定の IAM アクセス許可を持つカスタムポリシーもアタッチする必要があります。「」を参照してくださいSSM 環境作成用のカスタム IAM ポリシー。これは、AWSCloud9Administrator
ポリシーと AWSCloud9User
ポリシーに伴うアクセス許可の問題が原因です。
セキュリティ保護を強化するために、 AWS Cloud9 サービスにリンクされたロール にはAWSServiceRoleforAWSCloud9
、AWSCloud9ServiceRolePolicy
ポリシーPassRole
の制限があります。IAM ロールをサービスにPass (適用) すると、そのサービスがロールを引き受け、ユーザーに代わってアクションを実行できる許可がでます。この場合、 アクセスPassRole
許可により、 はAWSCloud9SSMAccessRole
ロール (およびそのアクセス許可) のみを EC2 インスタンスに渡す AWS Cloud9 ことができます。これにより、EC2 インスタンスで実行できるアクションは、 AWS Cloud9が必要とするもののみに限定されます。
注記
Systems Manager を使用してインスタンスにアクセスする必要がなくなった場合は、AWSCloud9SSMAccessRole
サービスロールを削除できます。詳細については、IAM ユーザーガイドの「ロールまたはインスタンスプロファイルを削除する」を参照してください。
を使用した Systems Manager のインスタンスプロファイルの管理 AWS CLI
また、 AWS CLIを使って no-ingress EC2 環境を作成できます。create-environment-ec2
を呼び出すとき、--connection-type
オプションをCONNECT_SSM
に設定します。
このオプションを使用する場合、AWSCloud9SSMAccessRole
サービスロールと AWSCloud9SSMInstanceProfile
は自動的に作成されません。そのため、必要なサービスプロファイルとインスタンスプロファイルを作成するには、次のいずれかを行います。
-
コンソールを使って EC2 環境を作成すると、その後は自動的に
AWSCloud9SSMAccessRole
サービスロールとAWSCloud9SSMInstanceProfile
が自動的に作成されます。作成後、サービスロールとインスタンスプロファイルは、 AWS CLIを使って作成した追加 EC2 環境で利用できます。 -
次の AWS CLI コマンドを実行して、サービスロールとインスタンスプロファイルを作成します。
aws iam create-role --role-name AWSCloud9SSMAccessRole --path /service-role/ --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": ["ec2.amazonaws.com","cloud9.amazonaws.com"] },"Action": "sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSCloud9SSMAccessRole --policy-arn arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile aws iam create-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile --path /cloud9/ aws iam add-role-to-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile --role-name AWSCloud9SSMAccessRole
Session Manager によって管理されているインスタンスへのアクセスをユーザーに与える
Systems Manager を介して EC2 インスタンスに接続されている AWS Cloud9 環境を開くには、ユーザーに API オペレーション のアクセス許可が必要ですStartSession
。このオペレーションにより、Session Manager セッション用マネージド EC2 インスタンスへの接続が開始されます。 AWS Cloud9 特定の管理ポリシー (推奨) を使用するか、IAM ポリシーを編集して必要なアクセス許可を追加することで、ユーザーにアクセス権を付与できます。
[メソッド] | 説明 |
---|---|
使用 AWS Cloud9固有の管理ポリシー |
Systems Manager によって管理される EC2 インスタンスへのアクセスをユーザーに許可するには、 AWS 管理ポリシーを使用することをお勧めします。管理ポリシーは、標準 AWS Cloud9 ユースケースの一連のアクセス許可を提供し、IAM エンティティに簡単にアタッチできます。 すべてのマネージドポリシーには、
重要 AWS Cloud9 環境を作成し、 詳細については、「AWS の マネージドポリシー AWS Cloud9」を参照してください。 |
IAM ポリシーを編集し、必要なポリシーステートメントを追加する |
既存のポリシーを編集するため、 ポリシーを編集するときに、 |
次のアクセス許可を使用すると、StartSession
API オペレーションの実行が有効になります。ssm:resourceTag
条件キーは、インスタンスが AWS Cloud9 EC2 開発環境 (Resource: arn:aws:ec2:*:*:instance/*
) であることを条件として、任意のインスタンス () に対して Session Manager セッションを開始できることを指定しますaws:cloud9:environment
。
注記
次のマネージドポリシーには、AWSCloud9Administrator
、AWSCloud9User
、およびAWSCloud9EnvironmentMember
というポリシーステートメントも含まれています。
{
"Effect": "Allow",
"Action": "ssm:StartSession",
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"StringLike": {
"ssm:resourceTag/aws:cloud9:environment": "*"
},
"StringEquals": {
"aws:CalledViaFirst": "cloud9.amazonaws.com"
}
}
},
{
"Effect": "Allow",
"Action": [
"ssm:StartSession"
],
"Resource": [
"arn:aws:ssm:*:*:document/*"
]
}
AWS CloudFormation を使用してイングレスなし EC2 環境を作成する
AWS CloudFormation テンプレートを使用して、no-ingress Amazon EC2 開発環境を定義する場合は、スタックを作成する前に次のことを行います。
-
AWSCloud9SSMAccessRole
サービスロールとAWSCloud9SSMInstanceProfile
インスタンスプロファイルを作成します。詳細については、「AWS CloudFormation テンプレートを使用したサービスロールとインスタンスプロファイルの作成」を参照してください。 -
を呼び出す IAM エンティティのポリシーを更新します AWS CloudFormation。こうすることで、EC2 インスタンスに接続する Session Manager セッションをスタートできます。詳細については、「IAM ポリシーに Systems Manager 許可を追加する」を参照してください。
AWS CloudFormation テンプレートを使用したサービスロールとインスタンスプロファイルの作成
サービスロール AWSCloud9SSMAccessRole
とインスタンスプロファイル AWSCloud9SSMInstanceProfile
を作成して、Systems Manager による開発環境をバックアップする EC2 インスタンスの管理を有効にします。
以前に を作成しAWSCloud9SSMAccessRole
、no-ingress EC2 環境を作成するwith the consoleか、AWS CLI コマンドを実行するAWSCloud9SSMInstanceProfile
と、サービスロールとインスタンスプロファイルは既に使用できます。
注記
no-ingress EC2 環境の AWS CloudFormation スタックを作成しようとしたが、最初に必要なサービスロールとインスタンスプロファイルを作成しなかったとします。そうすると、スタックは作成されず、次のエラーメッセージが表示されます。
インスタンスプロファイル AWSCloud9SSMinStanceProfile がアカウントに存在しません。
を使用して初めて no-ingress EC2 環境を作成する場合 AWS CloudFormation、 テンプレートで AWSCloud9SSMAccessRole
および を IAM リソースAWSCloud9SSMInstanceProfile
として定義できます。
サンプルテンプレートからのこの抜粋は、これらのリソースを定義する方法を示しています。AssumeRole
アクションは、 AWS Cloud9 環境とその EC2 インスタンスの両方へのアクセスを提供するセキュリティ認証情報を返します。
AWSTemplateFormatVersion: 2010-09-09
Resources:
AWSCloud9SSMAccessRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service:
- cloud9.amazonaws.com
- ec2.amazonaws.com
Action:
- 'sts:AssumeRole'
Description: 'Service linked role for AWS Cloud9'
Path: '/service-role/'
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile
RoleName: 'AWSCloud9SSMAccessRole'
AWSCloud9SSMInstanceProfile:
Type: "AWS::IAM::InstanceProfile"
Properties:
InstanceProfileName: AWSCloud9SSMInstanceProfile
Path: "/cloud9/"
Roles:
-
Ref: AWSCloud9SSMAccessRole
IAM ポリシーに Systems Manager 許可を追加する
AWS CloudFormation テンプレートでサービスロールとインスタンスプロファイルを定義した後、スタックを作成する IAM エンティティに Session Manager セッションをスタートする許可があることを確認してください。セッションは、Session Manager を使用した EC2 インスタンス への接続です。
注記
no-ingress EC2 環境用のスタックを作成する前に Session Manager セッションをスタートする許可を追加しない場合、AccessDeniedException
エラーが返されます。
AWS CloudFormationを呼び出すため、次のアクセス許可を IAM エンティティのポリシーに追加します。
{
"Effect": "Allow",
"Action": "ssm:StartSession",
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"StringLike": {
"ssm:resourceTag/aws:cloud9:environment": "*"
},
"StringEquals": {
"aws:CalledViaFirst": "cloudformation.amazonaws.com"
}
}
},
{
"Effect": "Allow",
"Action": [
"ssm:StartSession"
],
"Resource": [
"arn:aws:ssm:*:*:document/*"
]
}
依存関係をダウンロードするため、Amazon S3 の VPC エンドポイントを設定する
AWS Cloud9 環境の EC2 インスタンスがインターネットにアクセスできない場合は、指定された Amazon S3 バケットの VPC エンドポイントを作成します。このバケットには、IDE を最新の状態に保つために必要な依存関係が含まれています。
Amazon S3 の VPC エンドポイントを設定するには、アクセスポリシーをカスタマイズする必要があります。アクセスポリシーは、ダウンロードする依存関係を含む信頼された S3 バケットのみへのアクセスを許可するようにします。
注記
VPC エンドポイントは AWS Management Console、、 AWS CLI、または Amazon VPC API を使用して作成および設定できます。次の手順では、コンソールインターフェイスを使用して VPC エンドポイントを作成する方法について説明します。
Amazon S3 の VPC エンドポイントを作成および設定する
-
で AWS Management Console、Amazon VPC のコンソールページに移動します。
-
ナビゲーションバーで、[エンドポイント] を選択します。
-
エンドポイントページで、[エンドポイント作成]を選択します。
-
エンドポイントの作成ページで、検索フィールドに「s3」と入力し、戻るを押して、現在の AWS リージョンで、Amazon S3 で利用可能なエンドポイントをリストします。
-
返却された Amazon S3 エンドポイントのリストから、ゲートウェイタイプを選択できます。
-
次に、環境の EC2 インスタンスが含まれている VPC を選択します。
-
次に、VPC のルートテーブルを選択します。こうすることで、関連付けられたサブネットはエンドポイントにアクセスできるようになります。環境の EC2 インスタンスは、これらのサブネットの 1 つにあります。
-
ポリシーセクションで、カスタムオプションを選択し、スタンダードポリシーを以下に置き換えます。
{ "Version": "2008-10-17", "Statement": [ { "Sid": "Access-to-C9-bucket-only", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::{bucket_name}/content/dependencies/*" } ] }
Resource
要素に対して、 AWS リージョンで{bucket_name}
を利用可能なバケットの実際の名前に置き換えます。たとえば、欧州 (アイルランド) リージョン AWS Cloud9 で を使用している場合は、 を指定します"Resource": "arn:aws:s3:::static-eu-west-1-prod-static-hld3vzaf7c4h/content/dependencies/
。次の表に、 AWS リージョン が AWS Cloud9 利用可能な のバケット名を示します。
AWS Cloud9 リージョンの Amazon S3 バケット AWS リージョン バケット名 米国東部(オハイオ)
static-us-east-2-prod-static-1c3sfcvf9hy4m
米国東部 (バージニア北部)
static-us-east-1-prod-static-mft1klnkc4hl
米国西部 (オレゴン)
static-us-west-2-prod-static-p21mksqx9zlr
米国西部 (北カリフォルニア)
static-us-west-1-prod-static-16d59zrrp01z0
アフリカ (ケープタウン)
static-af-south-1-prod-static-v6v7i5ypdppv
アジアパシフィック (香港)
static-ap-east-1-prod-static-171xhpfkrorh6
アジアパシフィック (ムンバイ) static-ap-south-1-prod-static-ykocre202i9d
アジアパシフィック (大阪) static-ap-northeast-3-prod-static-ivmxqzrx2ioi
アジアパシフィック (ソウル) static-ap-northeast-2-prod-static-1wxyctlhwiajm
アジアパシフィック (シンガポール) static-ap-southeast-1-prod-static-13ibpyrx4vk6d
アジアパシフィック (シドニー)
static-ap-southeast-2-prod-static-1cjsl8bx27rfu
アジアパシフィック (東京)
static-ap-northeast-1-prod-static-4fwvbdisquj8
カナダ (中部)
static-ca-central-1-prod-static-g80lpejy486c
欧州 (フランクフルト)
static-eu-central-1-prod-static-14lbgls2vrkh
欧州 (アイルランド)
static-eu-west-1-prod-static-hld3vzaf7c4h
欧州 (ロンドン)
static-eu-west-2-prod-static-36lbg202837x
欧州 (ミラノ)
static-eu-south-1-prod-static-1379tzkd3ni7d
ヨーロッパ (パリ)
static-eu-west-3-prod-static-1rwpkf766ke58
ヨーロッパ (ストックホルム)
static-eu-north-1-prod-static-1qzw982y7yu7e
中東 (バーレーン)
static-me-south-1-prod-static-gmljex38qtqx
南米 (サンパウロ)
static-sa-east-1-prod-static-1cl8k0y7opidt
イスラエル (テルアビブ)
static-il-central-1-prod-static-k02vrnhcesue
-
[エンドポイントの作成] を選択します。
正しい設定情報を指定した場合は、作成されたエンドポイントの ID がメッセージに表示されます。
-
IDE が Amazon S3 バケットにアクセスできることをチェックするには、メニューバー上の[Window]、[New Terminal (新しいターミナル)] を選択してターミナルセッションをスタートします。次に、以下のコマンドを実行し、
{bucket_name}
をリージョンのバケットの実際の名前に置き換えます。ping {bucket_name}.s3.{region}.amazonaws.com.
例えば、米国東部 (バージニア北部) リージョンで S3 バケットのエンドポイントを作成した場合は、次のコマンドを実行します。
ping static-us-east-1-prod-static-mft1klnkc4hl.s3.us-east-1.amazonaws.com
ping が応答を受け取ると、IDE がバケットとその依存関係にアクセスできることを確認します。
この特徴の詳細については、「AWS PrivateLink ガイド」にあるAmazon S3 用エンドポイントを参照してください。
プライベート接続用 VPC エンドポイントの設定
Systems Manager を使用するアクセスのオプションを使用して、インスタンスをサブネットに起動する時には、セキュリティグループには受信ネットワークトラフィックを許可するインバウンドルールがありません。ただし、セキュリティグループには、インスタンスからのアウトバウンドトラフィックを許可するアウトバウンドルールがあります。これは、IDE AWS Cloud9 を最新の状態に保つために必要なパッケージとライブラリをダウンロードするために必要です。
インスタンスのアウトバウンドトラフィックとインバウンドトラフィックを防ぐには、Systems Manager 用の Amazon VPC エンドポイントを作成して設定します。インターフェイス VPC エンドポイント (インターフェイスエンドポイント) を使用すると、 を使用するサービスに接続できますAWS PrivateLink。 AWS PrivateLink は、プライベート IP アドレスを使用して Amazon EC2 および Systems Manager APIs にプライベートにアクセスするために使用できるテクノロジーです。VPC エンドポイントを設定して Systems Manager を使用するには、このナレッジセンターのリソース
警告
インバウンドまたはアウトバウンドのネットワークトラフィックを許可しないセキュリティグループを設定するとします。その後、IDE をサポートする EC2 AWS Cloud9 インスタンスにはインターネットアクセスがありません。したがって、VPC の Amazon S3 エンドポイントを作成して、信頼できる S3 バケットに含まれる依存関係へのアクセスを許可する必要があります。さらに、 などの一部の は AWS のサービス、インターネットアクセスなしでは意図したとおりに動作しない AWS Lambda場合があります。
では AWS PrivateLink、VPC エンドポイントを介して処理される各ギガバイトに対してデータ処理料金が発生します。これは、トラフィックの送信元または送信先に関係なく行われます。詳細については、AWS PrivateLink の料金