アリ雲資源編成(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着信パラメータは、以下のようにパラメータを使用することができます。
サブアカウントを作成し、サブアカウントのAccess KeyIDを取得し、サブアカウントで役割を演じるテンプレートコードを作成します。今度は直接写すのがいいです。
"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"
}
}
}