View a markdown version of this page

Octroi de l’accès à la fonction Lambda à d’autres comptes - AWS Lambda

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.

Octroi de l’accès à la fonction Lambda à d’autres comptes

Pour partager une fonction avec une autre Compte AWS, ajoutez une déclaration d'autorisations multicomptes à la politique basée sur les ressources de la fonction. Nous vous recommandons put-resource-policy de l'utiliser pour créer une politique JSON complète. Avecput-resource-policy, vous pouvez spécifier plusieurs principes, ajouter des conditions et créer des instructions de refus. Vous pouvez également l'utiliser add-permission pour des cas d'utilisation simples.

Important

L'utilisation put-resource-policy remplace toute politique basée sur les ressources existante sur la ressource. Si la ressource possède déjà des autorisations définies paradd-permission, les put-resource-policy remplace. get-resource-policyUtilisez-le pour récupérer la politique existante avant d'apporter des modifications.

Utiliser une politique JSON complète (recommandé)

L'exemple de politique suivant accorde deux Comptes AWS autorisations pour invoquer une fonction, l'une étant limitée à un rôle IAM spécifique :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-account-invoke", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:role/cross-account-role" ] }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function" } ] }

Enregistrez la politique dans un fichier nommé policy.json et appliquez-la. resource-arnVous pouvez spécifier une fonction, une version ou un alias :

aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function \ --policy file://policy.json

Vous pouvez également restreindre l'accès entre comptes à des versions spécifiques à l'aide d'un alias. La politique suivante autorise l'accès aux appels uniquement via l'prodalias :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-account-prod-alias", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function:prod" } ] }

Enregistrez cette politique dans un fichier nommé alias-policy.json et appliquez-la à l'alias :

aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function:prod \ --policy file://alias-policy.json

La stratégie basée sur les ressources accorde à l’autre compte l’autorisation d’accéder à la fonction, mais n’autorise pas les utilisateurs de ce compte à dépasser leurs autorisations. Les utilisateurs de l’autre compte doivent disposer des autorisations utilisateur correspondantes pour utiliser l’API Lambda.

Vous pouvez accorder l’accès entre comptes pour n’importe quelle action d’API qui s’exécute sur une fonction existante. Par exemple, vous pouvez accorder l’accès à lambda:ListAliases afin qu’un compte puisse obtenir une liste des alias ou à lambda:GetFunction pour qu’il puisse télécharger le code de votre fonction.

Pour accorder à d’autres comptes l’autorisation pour plusieurs fonctions ou pour des actions qui ne s’exécutent pas sur une fonction, nous vous conseillons d’utiliser des rôles IAM.

Utilisation de l'autorisation d'ajout

Pour des cas d'utilisation simples, vous pouvez add-permission ajouter des instructions individuelles. L'exemple suivant autorise le compte 111122223333 à invoquer my-function avec l'prodalias :

aws lambda add-permission \ --function-name my-function:prod \ --statement-id xaccount \ --action lambda:InvokeFunction \ --principal 111122223333 \ --output text

Vous devriez voir la sortie suivante :

{"Sid":"xaccount","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::111122223333:root"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-1:123456789012:function:my-function"}
Note

Si vous appelez add-permission afterput-resource-policy, la nouvelle instruction s'ajoute à la politique JSON existante.

Afin de limiter l’accès à un utilisateur ou à un rôle dans un autre compte, spécifiez l’ARN complet de l’identité en tant que principal. Par exemple, arn:aws:iam::123456789012:user/developer.