Code Monkey home page Code Monkey logo

psycopg2-lambda-layer's Introduction

psycopg2-lambda-layer

AWS Lambda layer for psycopg2

To use in your serverless.yml:

functions:
  hello:
    handler: handler.hello
    layers:
      # py 3.6:
      - arn:aws:lambda:us-east-1:898466741470:layer:psycopg2-py36:3
      - arn:aws:lambda:us-east-2:898466741470:layer:psycopg2-py36:1
      - arn:aws:lambda:us-west-2:898466741470:layer:psycopg2-py36:1
      - arn:aws:lambda:eu-central-1:898466741470:layer:psycopg2-py36:2
      - arn:aws:lambda:sa-east-1:898466741470:layer:psycopg2-py36:1
      # py 3.7:
      - arn:aws:lambda:eu-central-1:898466741470:layer:psycopg2-py37:6
      - arn:aws:lambda:ap-southeast-1:898466741470:layer:psycopg2-py37:1
      - arn:aws:lambda:us-east-1:898466741470:layer:psycopg2-py37:3
      - arn:aws:lambda:us-east-2:898466741470:layer:psycopg2-py37:1
      - arn:aws:lambda:us-west-2:898466741470:layer:psycopg2-py37:7
      - arn:aws:lambda:eu-west-1:898466741470:layer:psycopg2-py37:1
      - arn:aws:lambda:eu-west-2:898466741470:layer:psycopg2-py37:1
      - arn:aws:lambda:eu-west-3:898466741470:layer:psycopg2-py37:1
      - arn:aws:lambda:sa-east-1:898466741470:layer:psycopg2-py37:1
      - arn:aws:lambda:ap-southeast-1:898466741470:layer:psycopg2-py37:5
      - arn:aws:lambda:ap-southeast-2:898466741470:layer:psycopg2-py37:1
      - arn:aws:lambda:ca-central-1:898466741470:layer:psycopg2-py37:1
      - arn:aws:lambda:ap-south-1:898466741470:layer:psycopg2-py37:1
      # py 3.8:
      - arn:aws:lambda:ca-central-1:898466741470:layer:psycopg2-py38:1
      - arn:aws:lambda:us-east-1:898466741470:layer:psycopg2-py38:2
      - arn:aws:lambda:us-east-2:898466741470:layer:psycopg2-py38:1
      - arn:aws:lambda:us-west-1:898466741470:layer:psycopg2-py38:1
      - arn:aws:lambda:us-west-2:898466741470:layer:psycopg2-py38:1
      - arn:aws:lambda:eu-west-1:898466741470:layer:psycopg2-py38:1
      - arn:aws:lambda:eu-west-2:898466741470:layer:psycopg2-py38:1
      - arn:aws:lambda:eu-west-3:898466741470:layer:psycopg2-py38:1
      - arn:aws:lambda:eu-central-1:898466741470:layer:psycopg2-py38:1
      - arn:aws:lambda:eu-south-1:898466741470:layer:psycopg2-py38:1
      - arn:aws:lambda:ap-northeast-1:898466741470:layer:psycopg2-py38:1
      - arn:aws:lambda:ap-southeast-1:898466741470:layer:psycopg2-py38:1
      - arn:aws:lambda:ap-southeast-2:898466741470:layer:psycopg2-py38:1
      - arn:aws:lambda:sa-east-1:898466741470:layer:psycopg2-py38:1
      # py 3.9:
      - arn:aws:lambda:us-east-1:898466741470:layer:psycopg2-py39:1
      - arn:aws:lambda:us-east-2:898466741470:layer:psycopg2-py39:1
      - arn:aws:lambda:us-west-1:898466741470:layer:psycopg2-py39:1
      - arn:aws:lambda:us-west-2:898466741470:layer:psycopg2-py39:1
      - arn:aws:lambda:ca-central-1:898466741470:layer:psycopg2-py39:1
      - arn:aws:lambda:eu-west-1:898466741470:layer:psycopg2-py39:1
      - arn:aws:lambda:eu-west-2:898466741470:layer:psycopg2-py39:1
      - arn:aws:lambda:eu-west-3:898466741470:layer:psycopg2-py39:1
      - arn:aws:lambda:eu-central-1:898466741470:layer:psycopg2-py39:1

Regions

Please use the layer that matches your region, or you will get a permissions error.

No longer maintained

It turns out that providing public lambda layers is too unpleasant and buggy, so I recommend building your own layer and using it instead of publicly-provided layers.

Maybe AWS will make managing public layers less painful some day.

psycopg2-lambda-layer's People

Contributors

bl-nkd-v avatar jpines-vi avatar revmischa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

psycopg2-lambda-layer's Issues

pkg_resources.get_distribution('psycopg2') fails with DistributionNotFound

Using the python 3.6 layer, I am trying to use the sqlalchemy-redshift package.

This package has the following code in its __init__ module:

try:
    import psycopg2  # noqa: F401
    if get_distribution('psycopg2').parsed_version < parse_version('2.5'):
        raise ImportError('Minimum required version for psycopg2 is 2.5')

This code is successfully importing psycopg2, but is then failing with the following error:

Traceback (most recent call last):
  File "/var/task/app.py", line 14, in <module>
    import sqlalchemy_redshift # just testing
  File "/var/task/sqlalchemy_redshift/__init__.py", line 5, in <module>
    if get_distribution('psycopg2').parsed_version < parse_version('2.5'):
  File "/var/lang/lib/python3.6/site-packages/pkg_resources/__init__.py", line 479, in get_distribution
    dist = get_provider(dist)
  File "/var/lang/lib/python3.6/site-packages/pkg_resources/__init__.py", line 355, in get_provider
    return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
  File "/var/lang/lib/python3.6/site-packages/pkg_resources/__init__.py", line 898, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/var/lang/lib/python3.6/site-packages/pkg_resources/__init__.py", line 784, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'psycopg2' distribution was not found and is required by the application

This implies to me that something about the way the psycopg2 is installed isn't meeting all the requirements of some of the "standard" packaging tools in the Python world, but I am not 100% sure about all the details of this.

psycopg2-py37:2 in us-east-1...no permissions from us-east-1 account?!

I've gone through and confirmed that the user account has full rights to perform the action and that the account used is in us-east-1. When I perform simply try to access the version information, I receive:

An error occurred (AccessDeniedException) when calling the GetLayerVersion operation: User: arn:aws:iam::XXXXXXXXXXXX:user/XXXXXX-service is not authorized to perform: lambda:GetLayerVersion on resource: arn:aws:lambda:us-east-1:898466741470:layer:psycopg2-py37:2

My DevOps guys tells me I am doing it correctly, so what's up?

Access denied

During deployment, this error occurs.

  Serverless Error ---------------------------------------

  An error occurred: MakeUnderscorequizLambdaFunction - User: arn:aws:iam::<me> is not authorized to perform: lambda:GetLayerVersion on resource: arn:aws:lambda:us-east-1:898466741470:layer:psycopg2:2 (Service: AWSLambdaInternal; Status Code: 403; Error Code: AccessDeniedException; Request ID: 6c379e94-315b-11e9-b1c8-51d17319cae3).

Support for Python 3.9

Regarding the PR that was merged yesterday, #42
Seems like the 3.9 version isn't yet available

Screenshot 2023-08-23 at 11 27 40 AM

(vs 3.8):
Screenshot 2023-08-23 at 11 28 16 AM

Will the layers for Python 3.9 be redeployed anytime soon? Running into issues with compiling my own psycopg2 lambda layers, and this would be extremely useful to have! The region I'm particularly interested in is us-west-1. Appreciate it!

Layer "psycopg2-py38:1" is not accessible in "eu-central-1" region

The following command fails:

aws lambda get-layer-version --layer-name arn:aws:lambda:eu-central-1:898466741470:layer:psycopg2-py38 --version-number 1

though the following works fine:

aws lambda get-layer-version --layer-name arn:aws:lambda:eu-central-1:898466741470:layer:psycopg2-py37 --version-number 6
Screenshot 2024-01-21 at 20 12 55

Importing to function fails

I have successfully got the Lambda as part of the function configuration but when i use

import psycopg2-py38

in the code, i get a syntax error. I'm definitely using python v3.8. The error comes from the hyphen in the lambda layer name.

Is there a solution to this?

AccessDenied even though I am on the same region

When I run aws lambda get-layer-version --layer-name arn:aws:lambda:eu-central-1:898466741470:layer:psycopg2-py37 --version-number 2 --region eu-central-1 I get

An error occurred (AccessDeniedException) when calling the GetLayerVersion operation: User: XXX is not authorized to perform: lambda:GetLayerVersion on resource: arn:aws:lambda:eu-central-1:898466741470:layer:psycopg2-py37:2

I tried the same with different regions as well, same result. Also same result when I attempt to use the layer in a cloudformation template.

Any hints?

layer for sa-east-1 : Python3.7

Hello,

I tried to use the ARN given (arn:aws:lambda:sa-east-1:898466741470:layer:psycopg2-py37:1), but it didn't work. I got permission error. Could someone help please? Thanks.

No layer for py-3.8 in eu-west-2

psycopg2-lambda-layer is available for py3.8 in many regions but not in eu-west-2. It would be great to have it here.

Thank you very much,
Matias.

I am getting a permissions erros on arn:aws:lambda:us-west-2:898466741470:layer:psycopg2-py37:6

I am getting a permissions error on arn:aws:lambda:us-west-2:898466741470:layer:psycopg2-py37:6, I just noticed it yesterday. Have used with not issues in the past.

User: arn:aws:iam::*MYUserId is not authorized to perform: lambda:GetLayerVersion on resource: arn:aws:lambda:us-west-2:898466741470:layer:psycopg2-py37:6 (Service: AWSLambdaInternal; Status Code: 403; Error Code: AccessDeniedException; Request ID: 252ed721-a226-4e96-add3-94e587e8413a; Proxy: null)

Also console error "you are not authorized to perform: lambda:GetLayerVersion" when logged into Oregan US-West-2, Also added additional permissions for GetLayerVersion, but user has full Lambda access and always worked before. Could it be from the recent updates you made?

No usage instructions

Currently README lack of description for how to build layer ourselves and there are no references to serverless framework. It could be helpful for those who come searching for PostgreSQL layers whithout any knowledge about serverless

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.