ユーザーに代わって AWS OpsWorks スタックがタスクを実行できるようにする - AWS OpsWorks

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

ユーザーに代わって AWS OpsWorks スタックがタスクを実行できるようにする

重要

AWS OpsWorks Stacks は新規顧客を受け付けなくなりました。既存のお客様は、2024 年 5 月 26 日までは OpsWorks コンソール、 API、 CLI、 および CloudFormation リソースを通常どおり使用できますが、その時点でこれらのリソースは廃止されます。この移行に備えて、できるだけ早くスタックを AWS Systems Manager に移行することをおすすめします。詳細については、AWS OpsWorks Stacks サポート終了に関する FAQ および AWS Systems Manager アプリケーションマネージャへの AWS OpsWorks Stacks アプリケーションの移行 を参照してください。

AWS OpsWorks スタックは、ユーザーに代わって AWS の各種サービスとやり取りする必要があります。例えば、AWS OpsWorks Stacks は、Amazon EC2 とやり取りしてインスタンスを作成し、Amazon CloudWatch とやり取りしてモニタリング統計を取得します。スタックの作成時に、通常サービスロールと呼ばれる IAM ロールを指定し、AWS OpsWorks スタックに適切な権限を付与します。


             [Add Stack] (スタックの追加) ページの IAM ロールリスト。

新しいスタックのサービスロールを指定するときは、次のいずれかの操作を実行します。

  • 以前に作成した標準サービスロールを指定します。

    通常は、最初のスタックの作成時に標準サービスロールを作成し、そのロールを以降のすべてのスタックに使用できます。

  • IAM コンソールまたは API を使用して作成したカスタムサービスロールを指定します。

    この方法は、標準サービスロールよりも制限されたアクセス許可を AWS OpsWorks スタックに付与する場合に便利です。

注記

最初のスタックを作成するには、IAM [AdministratorAccess] ポリシーテンプレートでアクセス権限が定義されている必要があります。これらの権限により、AWS OpsWorks スタックは新しいIAMサービスロールを作成し、前述のようにユーザーをインポートすることができます。以降のすべてのスタックでは、ユーザーは最初のスタック用に作成されたサービスロールを選択できます。スタックを作成するための完全な管理権限は必要ではありません。

標準サービスロールにより、次のアクセス許可が付与されます。

  • すべての Amazon EC2 アクションを実行する (ec2:*)。

  • CloudWatch 統計を取得する (cloudwatch:GetMetricStatistics)。

  • Elastic Load Balancing を使用してサーバーにトラフィックを分散させる (elasticloadbalancing:*)。

  • Amazon RDS インスタンスをデータベースサーバーとして使用する (rds:*)。

  • iam:PassRole ロール (AWS OpsWorks) を使用して、スタックと Amazon EC2 インスタンス インスタンス間の安全な通信を提供する。

カスタムサービスロールを作成する場合は、スタックを管理するために AWS OpsWorks スタックが必要とするすべてのアクセス許可を確実に付与する必要があります。次の JSON 例は、標準サービスロールのポリシーステートメントです。カスタムサービスロールのポリシーステートメントには、少なくとも以下のアクセス権限が含まれていなければなりません。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:*", "iam:PassRole", "cloudwatch:GetMetricStatistics", "cloudwatch:DescribeAlarms", "ecs:*", "elasticloadbalancing:*", "rds:*" ], "Effect": "Allow", "Resource": [ "*" ], "Condition": { "StringEquals": { "iam:PassedToService": "ec2.amazonaws.com" } } } ] }

また、サービスロールには信頼関係があります。AWS OpsWorks スタックによって作成されたサービスロールには次の信頼関係があります。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "StsAssumeRole", "Effect": "Allow", "Principal": { "Service": "opsworks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

AWS OpsWorks スタックがユーザーに代わってタスクを実行するには、この信頼関係がサービスロールに必要です。デフォルトのサービスロールを使用する場合は、信頼関係を変更しないでください。カスタムサービスロールを作成する場合は、以下のいずれかを実行することで信頼関係を指定します。

  • [AM console] (IAMコンソール) で [Create role] (ロールの作成) ウィザードを使用している場合は、[Choose a use case] (ユースケースの選択) で [Opsworks] を選択します。このロールには適切な信頼関係がありますが、暗黙のうちにアタッチされているポリシーはありません。AWS OpsWorks スタックにユーザーに代わって行動する権限を付与するために、以下を含むカスタマー管理ポリシーを作成し、新しいロールにアタッチします。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:DescribeAlarms", "cloudwatch:GetMetricStatistics", "ec2:*", "ecs:*", "elasticloadbalancing:*", "iam:GetRolePolicy", "iam:ListInstanceProfiles", "iam:ListRoles", "iam:ListUsers", "rds:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "ec2.amazonaws.com" } } } ] }
  • AWS CloudFormation テンプレートを使用する場合は、テンプレートの [Resources] セクションに次のような行を追加できます。

    "Resources": { "OpsWorksServiceRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "opsworks.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "PolicyName": "opsworks-service", "PolicyDocument": { ... } ] } }, } }