Utilisation d'un AWS CloudFormation modèle pour créer une rubrique qui envoie des messages aux files d'SQSattente Amazon - Amazon Simple Notification Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation d'un AWS CloudFormation modèle pour créer une rubrique qui envoie des messages aux files d'SQSattente Amazon

AWS CloudFormation vous permet d'utiliser un fichier modèle pour créer et configurer un ensemble de AWS ressources en une seule unité. Cette section comporte un exemple de modèle qui simplifie le déploiement de rubriques qui effectuent des publications dans des files d'attente. Les modèles prennent en charge les étapes de configuration à votre place en créant deux files d'attente, en créant un sujet avec des abonnements aux files d'attente, en ajoutant une politique aux files d'attente afin que le sujet puisse envoyer des messages aux files d'attente et en créant des IAM utilisateurs et des groupes pour contrôler l'accès à ces ressources.

Pour plus d'informations sur le déploiement de AWS ressources à l'aide d'un AWS CloudFormation modèle, consultez la section Get Started du guide de AWS CloudFormation l'utilisateur.

Utilisation d'un AWS CloudFormation modèle pour configurer des sujets et des files d'attente dans un Compte AWS

L'exemple de modèle crée un SNS sujet Amazon qui peut envoyer des messages à deux SQS files d'attente Amazon avec les autorisations appropriées pour que les membres d'un IAM groupe puissent publier sur le sujet et un autre pour lire les messages des files d'attente. Le modèle crée également des IAM utilisateurs qui sont ajoutés à chaque groupe.

Vous copiez le contenu du modèle dans un fichier. Vous pouvez également télécharger le modèle depuis la page AWS CloudFormation Modèles. Sur la page des modèles, choisissez Parcourir les exemples de modèles par AWS service, puis choisissez Amazon Simple Queue Service.

M ySNSTopic est configuré pour publier sur deux points de terminaison abonnés, à savoir deux SQS files d'attente Amazon (MyQueue1 et MyQueue 2). MyPublishTopicGroup est un IAM groupe dont les membres sont autorisés à publier sur M à ySNSTopic l'aide de l'APIaction Publish ou de la commande sns-publish. Le modèle crée les IAM utilisateurs MyPublishUser MyQueueUser et leur fournit des profils de connexion et des clés d'accès. L'utilisateur qui crée une pile avec ce modèle spécifie les mots de passe des profils de connexion en tant que paramètres d'entrée. Le modèle crée des clés d'accès pour les deux IAM utilisateurs avec MyPublishUserKey et MyQueueUserKey. AddUserToMyPublishTopicGroup ajoute MyPublishUser au MyPublishTopicGroup afin que l'utilisateur dispose des autorisations attribuées au groupe.

M yRDMessage QueueGroup est un IAM groupe dont les membres sont autorisés à lire et à supprimer les messages des deux SQS files d'attente Amazon à l'aide des DeleteMessageAPIactions ReceiveMessageet. AddUserToMyQueueGroup MyQueueUser s'ajoute au M yRDMessage QueueGroup afin que l'utilisateur dispose des autorisations attribuées au groupe. MyQueuePolicy autorise M à publier ses notifications ySNSTopic aux deux files d'attente.

La liste suivante indique le contenu du AWS CloudFormation modèle.

{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "AWS CloudFormation Sample Template SNSToSQS: This Template creates an SNS topic that can send messages to two SQS queues with appropriate permissions for one IAM user to publish to the topic and another to read messages from the queues. MySNSTopic is set up to publish to two subscribed endpoints, which are two SQS queues (MyQueue1 and MyQueue2). MyPublishUser is an IAM user that can publish to MySNSTopic using the Publish API. MyTopicPolicy assigns that permission to MyPublishUser. MyQueueUser is an IAM user that can read messages from the two SQS queues. MyQueuePolicy assigns those permissions to MyQueueUser. It also assigns permission for MySNSTopic to publish its notifications to the two queues. The template creates access keys for the two IAM users with MyPublishUserKey and MyQueueUserKey. ***Warning*** you will be billed for the AWS resources used if you create a stack from this template.", "Parameters": { "MyPublishUserPassword": { "NoEcho": "true", "Type": "String", "Description": "Password for the IAM user MyPublishUser", "MinLength": "1", "MaxLength": "41", "AllowedPattern": "[a-zA-Z0-9]*", "ConstraintDescription": "must contain only alphanumeric characters." }, "MyQueueUserPassword": { "NoEcho": "true", "Type": "String", "Description": "Password for the IAM user MyQueueUser", "MinLength": "1", "MaxLength": "41", "AllowedPattern": "[a-zA-Z0-9]*", "ConstraintDescription": "must contain only alphanumeric characters." } }, "Resources": { "MySNSTopic": { "Type": "AWS::SNS::Topic", "Properties": { "Subscription": [{ "Endpoint": { "Fn::GetAtt": ["MyQueue1", "Arn"] }, "Protocol": "sqs" }, { "Endpoint": { "Fn::GetAtt": ["MyQueue2", "Arn"] }, "Protocol": "sqs" } ] } }, "MyQueue1": { "Type": "AWS::SQS::Queue" }, "MyQueue2": { "Type": "AWS::SQS::Queue" }, "MyPublishUser": { "Type": "AWS::IAM::User", "Properties": { "LoginProfile": { "Password": { "Ref": "MyPublishUserPassword" } } } }, "MyPublishUserKey": { "Type": "AWS::IAM::AccessKey", "Properties": { "UserName": { "Ref": "MyPublishUser" } } }, "MyPublishTopicGroup": { "Type": "AWS::IAM::Group", "Properties": { "Policies": [{ "PolicyName": "MyTopicGroupPolicy", "PolicyDocument": { "Statement": [{ "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": { "Ref": "MySNSTopic" } }] } }] } }, "AddUserToMyPublishTopicGroup": { "Type": "AWS::IAM::UserToGroupAddition", "Properties": { "GroupName": { "Ref": "MyPublishTopicGroup" }, "Users": [{ "Ref": "MyPublishUser" }] } }, "MyQueueUser": { "Type": "AWS::IAM::User", "Properties": { "LoginProfile": { "Password": { "Ref": "MyQueueUserPassword" } } } }, "MyQueueUserKey": { "Type": "AWS::IAM::AccessKey", "Properties": { "UserName": { "Ref": "MyQueueUser" } } }, "MyRDMessageQueueGroup": { "Type": "AWS::IAM::Group", "Properties": { "Policies": [{ "PolicyName": "MyQueueGroupPolicy", "PolicyDocument": { "Statement": [{ "Effect": "Allow", "Action": [ "sqs:DeleteMessage", "sqs:ReceiveMessage" ], "Resource": [{ "Fn::GetAtt": ["MyQueue1", "Arn"] }, { "Fn::GetAtt": ["MyQueue2", "Arn"] } ] }] } }] } }, "AddUserToMyQueueGroup": { "Type": "AWS::IAM::UserToGroupAddition", "Properties": { "GroupName": { "Ref": "MyRDMessageQueueGroup" }, "Users": [{ "Ref": "MyQueueUser" }] } }, "MyQueuePolicy": { "Type": "AWS::SQS::QueuePolicy", "Properties": { "PolicyDocument": { "Statement": [{ "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": ["sqs:SendMessage"], "Resource": "*", "Condition": { "ArnEquals": { "aws:SourceArn": { "Ref": "MySNSTopic" } } } }] }, "Queues": [{ "Ref": "MyQueue1" }, { "Ref": "MyQueue2" }] } } }, "Outputs": { "MySNSTopicTopicARN": { "Value": { "Ref": "MySNSTopic" } }, "MyQueue1Info": { "Value": { "Fn::Join": [ " ", [ "ARN:", { "Fn::GetAtt": ["MyQueue1", "Arn"] }, "URL:", { "Ref": "MyQueue1" } ] ] } }, "MyQueue2Info": { "Value": { "Fn::Join": [ " ", [ "ARN:", { "Fn::GetAtt": ["MyQueue2", "Arn"] }, "URL:", { "Ref": "MyQueue2" } ] ] } }, "MyPublishUserInfo": { "Value": { "Fn::Join": [ " ", [ "ARN:", { "Fn::GetAtt": ["MyPublishUser", "Arn"] }, "Access Key:", { "Ref": "MyPublishUserKey" }, "Secret Key:", { "Fn::GetAtt": ["MyPublishUserKey", "SecretAccessKey"] } ] ] } }, "MyQueueUserInfo": { "Value": { "Fn::Join": [ " ", [ "ARN:", { "Fn::GetAtt": ["MyQueueUser", "Arn"] }, "Access Key:", { "Ref": "MyQueueUserKey" }, "Secret Key:", { "Fn::GetAtt": ["MyQueueUserKey", "SecretAccessKey"] } ] ] } } } }