Unable to upload artifact None referenced by CodeUri parameter of HelloWorldFunction resource

13,661

Solution 1

Even I faced this issue, I took following action.

Issue was due to mismatch of bucket in app.py and in sam package command, so corrected bucket name and run the "sam build" and "sam package" commands again, it worked for me !

One more care, If you face time related issue while running "sam package", then there should be invalid system time, get it corrected and run "sam package" again.

Solution 2

I found this error was because I hadn't added S3 access to the service role that runs the build

On the Permissions tab of Role, Select the button "Attach policies" and choose "AmazonS3FullAccess", attach it via "Attach policy" button.

Now re-run your build.

Solution 3

I faced same issue, while running the below command:

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

Above command was missing AWS credentials with default profile. [I did not have a default profile in AWS configurations] If default profile is not located, you may need to provide profile name in the command as below

sam package \
  --template-file template.yml \
  --output-template-file package.yml \
  --s3-bucket brian-test-sam \
  --profile <profile_name>
Share:
13,661
Brian
Author by

Brian

Welcome to visit my blog. If you find my questions or answers useful, you can support me by registering honeygain with my referral link.

Updated on June 07, 2022

Comments

  • Brian
    Brian almost 2 years

    I'm following this tutorial to learn how to use SAM.

    Here's the code I have:

    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!';
    };
    

    When I run

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

    I got the error saying Unable to upload artifact None referenced by CodeUri parameter of HelloWorldFunction resource. An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

    Why does this happen?

    I've created the S3 bucket brian-test-sam on my AWS account. I've checked that my IAM user has AmazonS3FullAccess permission.

    The command

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

    says that the error was generated by aws cloudformation package --output-template-file package.yml --s3-bucket brian-test-sam --template-file /path/to/my/files/helloworld/template.yml

    What is wrong with my cloudformation?

    My aws cli version is aws-cli/1.16.169 Python/3.7.3 Darwin/18.6.0 botocore/1.12.159. And my npm version is 6.10.1.

  • Brian
    Brian almost 5 years
    The error message becomes Unable to upload artifact ./index.js referenced by CodeUri parameter of HelloWorldFunction resource. An error occurred (AccessDenied) when calling the PutObject operation: Access Denied after I add CodeUri: ./index.js to template.yml.