2

J'essaie de créer un projet sans serveur qui déploie une CloudFormation et, dans ce cadre, il essaie de créer un compartiment S3. Mais cela échoue à cause d'erreur suivant:Échec de création du compartiment S3

15:23:25 UTC+0550 CREATE_FAILED  AWS::S3::Bucket ServerlessDeploymentBucket API: s3:CreateBucket Access Denied 
15:23:24 UTC+0550 CREATE_IN_PROGRESS AWS::S3::Bucket ServerlessDeploymentBucket 

J'ai essayé de créer un seau S3 avec commande aws s3api create-bucket --bucket my-bucket --region us-west-2 qui crée avec succès le seau. Je ne sais pas pourquoi l'accès est refusé lors de la création du compartiment S3 via serverless. Quel pourrait être le problème ici?

Voici mon fichier serverless.yml

service: auth-service-gs 

provider: 
    name: aws 
    runtime: python2.7 
    stage: dev2-gs-1 
    region: us-west-2 
    profile: mfa 
    environment: 
    DB_HOST: "DB_HOST" 
    DB_USER: "root" 
    DB_PASS: "<password>" 
    LOG_LEVEL: "DEBUG" 


functions: 
    login: 
    handler: handler.login 
    events: 
     - http: 
      path: /api/v1/login 
      method: post 
      cors: true 

Je Déployez le service à l'aide $serverless deploy En outre, le contenu de ~/.aws/credentials

[mfa] 
aws_access_key_id = <ACESS_KEY> 
aws_secret_access_key = <SECRET_KEY> 
aws_session_token = <SESSION ID> 

Ce que je suis en exécutant

$ aws sts get-session-token --serial-number arn:aws:iam::<number>:mfa/<username> --token-code 123456

+4

Vérifiez si Serverless utilise un rôle IAM qui ne dispose pas des autorisations nécessaires pour créer S3 seau pour exécuter le CloudFormation –

+0

Config sans serveur mentionne la paire de clés, il n'y a pas de mention explicite des rôles. J'ai utilisé la même paire de clés et j'ai pu créer le seau. –

+0

Quelle est la politique IAM attachée à la fonction Lambda? – strongjz

Répondre

0

Votre rôle de processus nécessitera l'autorisation IAM, soit au niveau du rôle, soit au niveau de l'utilisateur, en fonction de votre implémentation.

En supposant que vous voulez que le processus de création et ont tous permisions au seau, vous besoin de quelque chose comme ceci:

{ 
    "Statement": [ 
    { 
     "Action": "s3:*", 
     "Effect": "Allow", 
     "Resource": [ 
     "arn:aws:s3:::my-bucket", 
     "arn:aws:s3:::my-bucket/*" 
     ] 
    } 
    ] 
} 
+0

Mais si c'était le cas, je n'aurais pas pu créer le compartiment S3 en utilisant la ligne de commande AWS, n'est-ce pas? –

+0

En outre, le processus crée le nouveau compartiment S3 lui-même. –