Je souhaite publier une rubrique Amazon Simple Notification Service (Amazon SNS) à partir d'une instance Amazon Elastic Compute Cloud (Amazon EC2) dans un autre compte AWS. Je souhaite utiliser un rôle Gestion des identités et des accès AWS (AWS IAM) pour une instance EC2 qui utilise un sous-réseau public.
Résolution
Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.
Configurer le compte avec l’instance
Procédez comme suit :
- Créez une politique IAM avec des autorisations de publication sur votre rubrique SNS. Exemple de politique :
{ "Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:us-east-1:123456789012:cross-account-ec2-sns"
}
]
}
Remarque : remplacez us-east-1 par la région AWS et 123456789012 par l’ID de compte.
- Créez un rôle IAM pour votre instance avec un nom similaire à cross-acc-ec2-sns-publish-role. Puis, associez la politique à votre rôle IAM.
- Lancez une instance dans un sous-réseau public avec accès à Internet.
Attachez le rôle IAM à l’instance.
Procédez comme suit :
- Ouvrez la console Amazon EC2.
- Dans le volet de navigation, sélectionnez Instances.
- Choisissez votre instance, telle que cross-acc-ec2-sns-publish-role, puis choisissez Actions.
- Sélectionnez Sécurité, puis Modifier le rôle IAM.
- Sélectionnez le rôle IAM que vous avez créé, puis choisissez Enregistrer.
Remarque : pour résoudre les problèmes de connexion Internet de l’instance, consultez la section Pourquoi mon instance Amazon EC2 ne peut-elle pas accéder à Internet via une passerelle Internet ?
Configurer le compte avec la rubrique SNS
Procédez comme suit pour créer une rubrique SNS et ajouter des autorisations permettant au rôle IAM Amazon EC2 d'effectuer l'action Publier :
- Créez une rubrique SNS avec un nom similaire à cross-account-ec2-sns.
- Abonner un point de terminaison à la rubrique, puis confirmer l'abonnement
- Ouvrez la console Amazon SNS.
- Dans le volet de navigation, choisissez Rubriques, puis choisissez la rubrique SNS dans laquelle vous souhaitez publier.
- Choisissez l'onglet Stratégie d’accès.
- Sous Détails, choisissez Modifier.
- Développez la section Stratégie d’accès, puis saisissez la stratégie d'accès SNS suivante :
{
"Version": "2008-10-17",
"Id": "__default_policy_ID",
"Statement": [
{
"Sid": "__default_statement_ID",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"SNS:GetTopicAttributes",
"SNS:SetTopicAttributes",
"SNS:AddPermission",
"SNS:RemovePermission",
"SNS:DeleteTopic",
"SNS:Subscribe",
"SNS:Publish",
"SNS:Receive"
],
"Resource": "arn:aws:sns:us-east-1: 123456789012:cross-account-ec2-sns",
"Condition": {
"StringEquals": {
"AWS:SourceOwner": "123456789012"
}
}
},
{
"Sid": "grant-65864586-publish-and-listsubscriptionsbytopic",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam:: 111122223333:role/cross-acc-ec2-sns-role"
},
"Action": [
"sns:Publish",
"sns:ListSubscriptionsByTopic"
],
"Resource": "arn:aws:sns:us-east-1:123456789012:cross-account-ec2-sns"
}
]
}
Remarque : remplacez us-east-1 par la région, 123456789012 par l’ID de compte et 111122223333 par l'ID d’utilisateur IAM.
- Sélectionnez Enregistrer les modifications.
Publier la notification depuis l’instance et tester la configuration
Procédez comme suit :
- Ouvrez la console Amazon EC2 avec le compte auquel appartient votre instance.
- Connectez-vous à votre instance. Pour les instances Windows, consultez la section Se connecter à une instance Windows à l'aide du protocole RDP. Pour les instances Linux, consultez la section Se connecter à l’instance Linux via SSH.
- Exécutez la commande Publier de l’AWS CLI suivante pour exécuter une requête de test :
aws sns publish --topic-arn "arn:aws:sns:us-east-1:123456789012:cross-account-ec2-sns" --message "test" --region us-east-1
Remarque : remplacez us-east-1 par la région et 123456789012 par l’ID de compte.