aws-powertools / powertools-lambda-python

A developer toolkit to implement Serverless best practices and increase developer velocity.
https://docs.powertools.aws.dev/lambda/python/latest/
MIT No Attribution
2.78k stars 386 forks source link

Maintenance: Adding new AWS Regions to the Lambda Layers Deployment #1950

Closed leandrodamascena closed 1 year ago

leandrodamascena commented 1 year ago

Summary

AWS recently launched new regions:

Asia Pacific (Melbourne) ap-southeast-4 Asia Pacific (Hyderabad) ap-south-2 Europe (Spain) eu-south-2 Europe (Zurich) eu-central-2 Middle East (UAE) me-central-1

AWS Global Infrastructure Map

According to this AWS blog post, graviton2 (arm64) is not yet available in Spain and Zurich.

Why is this needed?

Deploy Lambda Layers to these new regions.

Which area does this relate to?

No response

Solution

No response

Acknowledgment

leandrodamascena commented 1 year ago

@rubenfonseca do you think it is possible to prioritize this issue this week? I think this is very important for the new customers that are using Lambda in these new regions.

rubenfonseca commented 1 year ago

I've been looking at this today. It would require big changes to support regions only with x86_64. So I'll start by adding support for the regions that support both architectures, and see if there's any workaround for the rest of the regions.

rubenfonseca commented 1 year ago

Update: none of the new regions support ARM64 layers. Continuing to see if it's possible to support x86_64 only.

leandrodamascena commented 1 year ago

Thank you for the update @rubenfonseca!

rubenfonseca commented 1 year ago

Update: I've tried to change our CDK stacks in order to automatically detect and support regions that supported just one or both architectures. Unfortunately that proved impossible, since when running some of the code on the new regions, the CloudFormation stack doesn't even compile (you cannot even say compatibleArchitectures: ["x86_64"] in those instances, as it complains that you cannot even pass that flag).

So it becomes really hard to think about a scenario where we support regions with only x86_64. It's not impossible of course, but it would require a significant rewrite of our pipeline and CDK Layer stacks. I suggest we evaluate customer demand for those special regions and/or monitor as the new regions add support for arm64.

leandrodamascena commented 1 year ago

Hello @rubenfonseca! I agree with you that big changes in our pipeline can be very critical with an impact on new deployments.

I just wanted to know if we can anticipate customer demand and find a way to do it now. We have the update_layer_arn.sh script which is executable after the pipeline ends, do you think it's possible to add to that (or even create a new one) something like this:

curl $(aws lambda get-layer-version-by-arn --arn arn:aws:lambda:us-east-1:017000801446:layer:AWSLambdaPowertoolsPythonV2:VERSION --query Content.Location --output text) -o layer.zip

aws lambda publish-layer-version --layer-name AWSLambdaPowertoolsPythonV2 --description "PowertoolsLayer" --license-info "MIT" --zip-file fileb://layer.zip --compatible-runtimes python3.7 python3.8 python3.9 --region ap-southeast-4 (add other regions) This isn't the best way to go about it I know, but we've managed to make the Powertools experience seamless for customers in any region. We also can create an issue to mention that it is a technical debt and monitor the arm64 architecture launch in the new regions.

Does it make sense to you? Is this suitable for now? It was just an idea I had, maybe this could even be a manual copy at this moment.

github-actions[bot] commented 1 year ago

⚠️COMMENT VISIBILITY WARNING⚠️

This issue is now closed. Please be mindful that future comments 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.

github-actions[bot] commented 1 year ago

This is now released under 2.14.0 version!