web-dev-qa-db-fra.com

Impossible de télécharger Artefact Aucun non référencé par le paramètre Codeuri de la ressource HelloworLDFunction

Je suive - ce tutoriel Pour apprendre à utiliser SAM .

Voici le code que j'ai:

template.yml :

AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10

Index.js

exports.handler = async function(event, context) {
    return 'Hello World!';
};

Quand je cours

sam package \
  --template-file template.yml \
  --output-template-file package.yml \
  --s3-bucket brian-test-sam

J'ai eu l'erreur de dire Unable to upload artifact None referenced by CodeUri parameter of HelloWorldFunction resource. An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

Pourquoi cela arrive-t-il?

J'ai créé le godet S3 brian-test-sam Sur mon compte AWS. J'ai vérifié que mon utilisateur IAM a AmazonS3FullAccess Autorisation.

La commande

sam --debug package \                                                                                           <aws:dev-bionime>
  --template-file template.yml \
  --output-template-file package.yml \
  --s3-bucket brian-test-sam

dit que l'erreur a été générée par aws cloudformation package --output-template-file package.yml --s3-bucket brian-test-sam --template-file /path/to/my/files/helloworld/template.yml

Quel est le problème avec mon cloudformation?

Ma version AWS CLI est aws-cli/1.16.169 Python/3.7.3 Darwin/18.6.0 botocore/1.12.159. Et ma version npm est 6.10.1.

6
Brian

J'ai trouvé que cette erreur était parce que je n'avais pas ajouté l'accès S3 au rôle de service qui exécute la construction.

Dans l'onglet Autorisations du rôle, sélectionnez le bouton "Joindre des stratégies" et choisissez "Amazons3fullAccess", joignez-la via le bouton "Joindre la stratégie".

Maintenant réexécuter votre construction.

1
Jiminy James

J'ai confronté le même problème, tout en exécutant la commande ci-dessous:

sam package \
  --template-file template.yml \
  --output-template-file package.yml \
  --s3-bucket <your_bucket_name>

La commande ci-dessus a manqué des informations d'identification AWS avec le profil par défaut. [Je n'ai pas eu de profil par défaut dans AWS Configurations] Si le profil par défaut n'est pas situé, vous devrez peut-être fournir un nom de profil dans la commande ci-dessous.

sam package \
  --template-file template.yml \
  --output-template-file package.yml \
  --s3-bucket brian-test-sam \
  --profile <profile_name>
0
Amit Kaneria

Vous devez fournir la propriété CodeUri pointant votre annuaire local.

AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10
      CodeUri: ./code
0
Pubudu Jayawardana