Giter VIP home page Giter VIP logo

Comments (6)

jysheng123 avatar jysheng123 commented on June 4, 2024

Hi, thanks for the asking the question. sam deploy does not know which bucket too upload to initially for deployment, hence the --s3-bucket flag. However the reason why we can't use the buckets defined in the template file is that they are not yet created yet, they first need to be uploaded then deployed. However before that happens, an actual bucket needs to be provided for the deployment to be uploaded too, hence the ProdArtifactBucket. Let me know if there any other questions you had or if that explanation did not make sense.

from aws-sam-cli.

fade2black avatar fade2black commented on June 4, 2024

@jysheng123 Thank you for reply. Yes, the explanation makes sense.
I am simply worried about the fact that just in order to create a simple Hello Lambda sam project you need:

  1. S3 bucket for deployment pipeline
  2. S3 bucket for logging of the previous bucket, and
  3. S3 bucket for --s3-bucket flag.

This seems to be overkill, doesn't it?
So, what I do is first I run pipeline without providing a bucket (inside samconfig.toml). Upon successful deployment , the pipeline stack it will start the pipeline (for the first time), but will fail building because the no bucket is provided. Then I simply copy the newly created S3 bucket, update the samconfig.toml with this bucket, commit and push. It triggers the pipeline again and deploys successfully. Thus I reduce the the num of buckets to 2 at the cost of the first failure. Makes sense or looks like antipattern? Actually, I could not find a flag saying to the pipeline not to run when it is first created. If it existed then I could just turn off the first run and could avoid that failure. I think running the pipeline as soon as it is deployed does not make much sense. It should be only deployment and not trigger. What do you think?

from aws-sam-cli.

jysheng123 avatar jysheng123 commented on June 4, 2024

Hmm, I understand your logic but creating multiple buckets doesn't cost much resources at all, and to us, this many buckets is normal for creating a deployment pipeline since each of the buckets serve it's own unique purpose. That is why we don't really have functionality for not running the pipeline when it is first created. Is there a use case in why you want to only have 2 buckets? If you specify the bucket getting deployed before, you would limit the buckets created in the process to 2 as well.

from aws-sam-cli.

fade2black avatar fade2black commented on June 4, 2024

@jysheng123 No specific use case, just want to keep S3 Dashboard clean :-). But I found another solution.
When I first time create a pipeline I store the bucket as an ENV var for a specific stage/action like

EnvironmentVariables: !Sub |
   [
     {"name": "ENV_BUCKET", "value": "${PipelineArtifactsBucket}"}
   ]

and later use it with the deploy command

sam deploy --config-env ${CONFIGENV} \
             --s3-bucket ${ENV_BUCKET} \
             --resolve-image-repos \
             --no-confirm-changeset \
             --no-fail-on-empty-changeset

from aws-sam-cli.

jysheng123 avatar jysheng123 commented on June 4, 2024

Ah sounds good, thanks for bringing up the question then, apologies if I was not helpful enough for this question.

from aws-sam-cli.

github-actions avatar github-actions commented on June 4, 2024

⚠️COMMENT VISIBILITY WARNING⚠️

Comments on closed issues are hard for our team to see.
If you need more assistance, please either tag a team member or open a new issue that references this one.
If you wish to keep having a conversation with other community members under this issue feel free to do so.

from aws-sam-cli.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.