アリ雲資源編成(ROS)Sample


AWS cloudFormationサービスを利用したことがありますが、お客様の環境構築のために使いやすいと思います。最近はお客様がアリクラウドOSSバケットのリソースを作成して、ユーザーmobile APPのアクセスに対応するRAMキャラクターとserverアクセスのためのサブアカウントを提供する必要があります。文書は5小節を書いています。全体の過程は煩雑です。お客様の手動操作が必要であれば、迷惑をかけるかもしれません。そこで、AWS cloudFormationに対応する阿里雲資源編成サービス(ROS)を見ました。このドキュメントはいくつかのSampleを記録しています。便利になったらこのような穴を埋めます。アリ雲の文書はやはりいいです。テンプレートの基本文法:https://help.aliyun.com/document_detail/28858.html?spm=a 2 c 4 g.1186623.6.56 80.161 a 3 f 76 e 6 WOvqリソースインデックス:https://help.aliyun.com/document_detail/1278039.html?spm=a 2 c 4 g.1186623.6.545.d 496897 MYamITシーンはOSSバケットを作成し、OSSバケットにアクセスするサブアカウントを作成し、STSサービスを作成してOSSバケットにアクセスするキャラクターです。また、サブアカウントとキャラクターの権限が異なります。実はここで2つの問題を解決します。1着信パラメータ2は、どのように第1のリソースを第2のリソースの入力として使用するか、依存実行1着信パラメータは、以下のようにパラメータを使用することができます。
 "Parameters": {
    "UserInputName": {
      "Type": "String",
      "Description": {
        "en": "user name",
        "zh-cn": "           "
      },
      "AllowedPattern": "^[a-z0-9]{1}[a-z0-9\\-.]{1,62}[a-z0-9]{1}$",
      "Label": "User Name",
      "ConstraintDescription": "Must begin and be end with a lowercase letter or number. The length is within [3, 63]",
      "Default": "test"
    }
  }
つまり、一つのパラメータが入ってきました。UserInputNameはどう使いますか?関数パラメータに使用する必要があります。
{
   "Ref": "UserInputName"
}
テンプレートから対応する入力を取得し、対応するリソースに記入して作成できます。2はどのように第一のリソースを第二のリソースの入力として使用するか、依存して実行する。どのようにしてリソース作成の出力を読み取るかは、関数を使用して実行した後に、リソース作成後の出力となります。
{"Fn::GetAtt": ["RamUser","UserId"]}
第二のリソースはどうやって最初のリソースを作成してから実行しますか?Resourcesフィールドにはdepends Onフィールドがあります。他のリソースに依存するリソースを実現することができます。
サブアカウントを作成し、サブアカウントのAccess KeyIDを取得し、サブアカウントで役割を演じるテンプレートコードを作成します。今度は直接写すのがいいです。
{
  "Description": "test",
  "Parameters": {
    "UserInputName": {
      "Type": "String",
      "Description": {
        "en": "user name",
        "zh-cn": "           "
      },
      "AllowedPattern": "^[a-z0-9]{1}[a-z0-9\\-.]{1,62}[a-z0-9]{1}$",
      "Label": "User Name",
      "ConstraintDescription": "Must begin and be end with a lowercase letter or number. The length is within [3, 63]",
      "Default": "test"
    }
  },
  "ROSTemplateFormatVersion": "2015-09-01",
  "Outputs": {
    "   ": {
      "Value": {"Fn::GetAtt": ["RamUser","UserName"]}
    },
    "  ID": {
      "Value": {"Fn::GetAtt": ["RamUser","UserId"]}
    },
    "  ARN": {
      "Value":{
        "Fn::Sub": [
          "acs:ram::${Var1}:user/${Var2}",
          {
            "Var1": { "Ref":"ALIYUN::TenantId" },
            "Var2": {"Fn::GetAtt": ["RamUser","UserName"]}
          }
        ]
      }
    },
    "  AccessKeyID": {
      "Value": {"Fn::GetAtt": ["RamAK", "AccessKeyId"]}
    },
    "  AccessKeySecret": {
          "Value": {"Fn::GetAtt": ["RamAK","AccessKeySecret"]}
    }
  },
  "Resources": {
    "RamUser":{
      "Type": "ALIYUN::RAM::User",
      "Properties": {
        "UserName":  {
          "Ref": "UserInputName"
        },
        "DisplayName": "User"
      }
    },
    "RamAK": {
      "Type": "ALIYUN::RAM::AccessKey",
      "Properties": {
        "UserName":  {"Fn::GetAtt": ["RamUser","UserName"]}
      },
      "DependsOn":"RamUser"
    },
    "RamRole": {
      "Type": "ALIYUN::RAM::Role",
      "Properties": {
        "RoleName": "AppRole",
        "Description": "OSS RAM  ",
        "AssumeRolePolicyDocument" : {
          "Statement": [
            {
                "Action": "sts:AssumeRole",
                "Effect": "Allow",
                "Principal": {
                  "RAM": [{ 
                    "Fn::Sub": [
                      "acs:ram::${Var1}:user/${Var2}",
                      {
                        "Var1": { "Ref":"ALIYUN::TenantId" },
                        "Var2": {"Fn::GetAtt": ["RamUser","UserName"]}
                      }
                    ]
                  }]
                }
            }
          ],
          "Version":"1"
        }
      },
      "DependsOn":"RamUser"
    }

  }
}