Terraform は、クラウドリソースを安全かつ効率的にプレビュー、構成、管理できるオープンソースツールです。このトピックでは、Terraform を使用して RAM ロールを作成し、アクセスポリシーをアタッチする方法について説明します。
このチュートリアルに記載されているサンプルコードはワンクリック実行に対応しており、そのまま実行できます。ワンクリックで実行
前提条件
-
セキュリティリスクを低減するため、このチュートリアルで実行する操作には、最小限の必要な権限のみを持つ Resource Access Management (RAM) ユーザーを使用することを推奨します。詳細については、「RAM ユーザーの作成」および「RAM ユーザーの権限管理」をご参照ください。必要なアクセスポリシーは以下のとおりです:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ram:GetRole", "ram:ListPoliciesForRole", "ram:ListRoles", "ram:CreateRole", "ram:DeleteRole", "ram:DetachPolicyFromRole", "ram:UpdateRole", "ram:GetPolicy", "ram:GetPolicyVersion", "ram:AttachPolicyToRole", "ram:CreatePolicy", "ram:CreatePolicyVersion", "ram:ListEntitiesForPolicy", "ram:ListPolicyVersions", "ram:DeletePolicy", "ram:DeletePolicyVersion", "ram:ListPoliciesForGroup", "ram:ListPolicies", "ram:ListPolicyAttachments" ], "Resource": "*" } ] } -
Terraform 環境を準備します。Terraform の実行には、以下のいずれかの方法を使用できます。
Terraform Explorer での Terraform の使用:Alibaba Cloud が提供するオンライン環境で Terraform を実行できます。Terraform のインストールは不要であり、ログインするだけでオンラインで Terraform を利用・試用できます。これは、無料で迅速かつ簡単に Terraform を試験・デバッグしたい場合に適した方法です。
Cloud Shell:Alibaba Cloud Cloud Shell には、事前にインストール済みの Terraform コンポーネントと設定済みの認証情報が含まれています。Cloud Shell 内で Terraform コマンドを直接実行できます。これは、低コストで迅速かつ簡単に Terraform にアクセス・利用したい場合に適した方法です。
ローカルマシンへの Terraform のインストールおよび構成:ネットワーク接続が不安定な場合や、カスタム開発環境が必要な場合に適した方法です。
使用するリソース
-
alicloud_ram_policy:アクセスポリシー。
-
alicloud_ram_role:RAM ロール。
-
alicloud_ram_role_policy_attachment:RAM ロールへの権限付与。
ステップ 1:アクセスポリシーの作成
-
作業ディレクトリを作成し、その中に main.tf という名前の構成ファイルを作成します。以下のコードはカスタムポリシーを作成します。このコードを main.tf にコピーしてください。アクセスポリシーの詳細については、「ポリシーランゲージ」をご参照ください。
resource "random_integer" "default" { min = 10000 max = 99999 } # アクセスポリシー resource "alicloud_ram_policy" "policy" { policy_name = "policy-name-${random_integer.default.result}" policy_document = <<EOF { "Statement": [ { "Action": [ "oss:ListObjects", "oss:GetObject" ], "Effect": "Deny", "Resource": [ "acs:oss:*:*:mybucket", "acs:oss:*:*:mybucket/*" ] } ], "Version": "1" } EOF description = "this is a policy test" force = true } -
次のコマンドを実行して、Terraform 環境を初期化します。
terraform init以下のメッセージが表示された場合、初期化は成功しています。
Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary. -
次のコマンドを実行してコードを実行します。
terraform applyプロンプトが表示されたら、
yesを入力し、Enter キーを押します。コマンドの完了までお待ちください。以下のメッセージが表示された場合、コードの実行は成功しています。You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes Apply complete! Resources: 2 added, 0 changed, 0 destroyed. -
結果を確認します。
terraform show コマンドの実行
作業ディレクトリで、以下のコマンドを実行して、Terraform によって作成されたリソースの詳細を照会します:
terraform show
コンソールでの確認
Resource Access Management (RAM) コンソール にログインします。 ページに移動し、作成したアクセスポリシーを確認します。

ステップ 2:RAM ロールの作成および権限付与
-
main.tfファイルに、以下のコードを追加します。# RAM ロール resource "alicloud_ram_role" "role" { name = "role-name-${random_integer.default.result}" document = <<EOF { "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "apigateway.aliyuncs.com", "ecs.aliyuncs.com" ] } } ], "Version": "1" } EOF description = "this is a role test." force = true } # RAM ロールへの権限付与 resource "alicloud_ram_role_policy_attachment" "attach" { policy_name = alicloud_ram_policy.policy.policy_name role_name = alicloud_ram_role.role.name policy_type = alicloud_ram_policy.policy.type } -
実行計画を作成し、変更内容をプレビューします。
terraform plan -
次のコマンドを実行してコードを実行します。
terraform applyプロンプトが表示されたら、
yesを入力し、Enter キーを押します。コマンドの完了までお待ちください。以下のメッセージが表示された場合、コードの実行は成功しています。Apply complete! Resources: 2 added, 0 changed, 0 destroyed. -
結果を確認します。
terraform show コマンドの実行
作業ディレクトリで、以下のコマンドを実行して、Terraform によって作成されたリソースの詳細を照会します:
terraform show
コンソールでの確認
-
Resource Access Management (RAM) コンソール にログインします。 ページに移動し、作成した RAM ロールを確認します。

-
をクリックして、RAM ロールの権限を確認します。

-
リソースのクリーンアップ
Terraform を使用して作成したリソースが不要になった場合は、以下のコマンドを実行してリソースを解放します。「terraform destroy」の詳細については、「共通コマンド」をご参照ください。
terraform destroy
完全なサンプルコード
このチュートリアルに記載されているサンプルコードはワンクリック実行に対応しており、そのまま実行できます。ワンクリックで実行
サンプルコード
より完全なサンプルについては、「より完全なサンプル」の製品固有フォルダをご参照ください。