Ich versuche, eine Vorlage mit Cloud-Formation zu erstellen, die einen Load Balancer zum Schreiben von Protokollen in S3-Bucket einrichtet. Statt vollen Zugriff auf alle geben (z *), möchte ich PutObject
nur Zugriff auf die Load-Balancer-Konto oder eine Dienstleistung beschränken:AWS Cloud-Formation Elastic Load Balancing Kontonummer
{
"Resources": {
"LoggingBucketPolicy": {
"Type": "AWS::S3::BucketPolicy",
"Properties": {
"Bucket": {
"Ref": "LoggingBucket"
},
"PolicyDocument": {
"Action": [
"s3:PutObject"
],
"Effect": "Allow",
"Resource": {
"Fn::Join": [
"",
[
"arn:aws:s3:::",
{
"Ref": "LoggingBucket"
},
"/*"
]
]
},
"Principal": {
"Ref": "ElasticLoadBalancingAccountID" //How do I set this dynamically?
}
}
}
}
}
}
Die documentation bietet Konto-IDs von ELB-Instanzen in verschiedenen Regionen. Die Vorlage, die ich erstelle, verfügt jedoch über einen Verfügbarkeitszonenparameter, bei dem der Benutzer eine Verfügbarkeitszone auswählen kann, für die der Stapel bereitgestellt werden soll. Also, was ich im Idealfall tun möchte, ist eine Art ref
Variable in meiner Bucket-Richtlinie, die die Konto-ID von Load Balancer basierend auf der Verfügbarkeitszone erhält.
Ich sah auch Beispiele in der official documentation, aber das eine Beispiel, das Ref
verwendet, definiert nicht wirklich die Variable.
Wie erreiche ich das?
Bearbeiten: Ich meinte die Verfügbarkeit Zonen statt Region. Der Eingabeparameter bietet dem Benutzer eine Dropdown-Liste mit Verfügbarkeitszonen in einer Region.
Hi..thank Sie für die Antwort. Ich meine Verfügbarkeitszone anstelle der Region. Ich habe Ihren Vorschlag ausprobiert, bekomme aber einen Fehler: 'Zugriff verweigert für den Bucket: xxxxxxxxxxx.development. Bitte überprüfen Sie die S3bucket-Berechtigung. – MojoJojo
Ich habe eine Ausgabevariable erstellt, um den Wert von '{" Ref ":" AWS :: AccountId "} auszugeben und stellt fest, dass der Wert meiner Konto-ID geschrieben wird Stack und * nicht * die Account-ID, die verwendet wird, um ELB wie hier identifiziert auszuführen: http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-access-logs.html#enable-access-logs-console – MojoJojo
OK. Ich verstehe was du versuchst zu tun. Es gibt keine Variable für das, was Sie wollen. Sie müssen diese Konto-IDs entweder fest codieren oder Eingangsvariablen für Ihre Vorlage verwenden. –