serverless-s3-local запись в реальное ведро S3

Я использую Serverless framework с плагином serverless -s3-local для тестирования моего кода во время разработки. Однако, несмотря на то, что он находится в автономном режиме, в настоящее ведро S3 выполняется запись. Как я могу изменить свою конфигурацию, чтобы использовать локальную поддельную корзину s3 в автономном режиме?

Соответствующие разделы serverless.yml:

      plugins:
  - serverless-stack-output
  - serverless-plugin-include-dependencies
  - serverless-layers
  - serverless-deployment-bucket
  - serverless-s3-local
  - serverless-offline
custom:
  #...
  s3:
    bucketName: test-s3-buck
    host: localhost
  serverless-offline:
    ignoreJWTSignature: true
    httpPort: 4000
    noAuth: true
    directory: /tmp
resources:
  Resources:
    #...
    Bucket:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: ${self:custom.s3.bucketName}

Вызов конечной точки S3:

      import boto3


def post(event, context):
    s3_path = "/test.txt"
    body = "test"
    encoded_string = body.encode("utf-8")

    s3 = boto3.resource("s3")
    bucket_name = "test-s3-buck"
    s3.Bucket(bucket_name).put_object(Key=s3_path, Body=encoded_string)

    response = {
        "statusCode": 200,
        "body": "Created."
    }
    return response

Запуск бессерверного автономного режима:

      serverless offline start

1 ответ

в файле readme в serverless-s3-local у нас есть:

        const S3 = new AWS.S3({
    s3ForcePathStyle: true,
    accessKeyId: 'S3RVER', // This specific key is required when working offline
    secretAccessKey: 'S3RVER',
    endpoint: new AWS.Endpoint('http://localhost:4569'),
  });

вы можете добиться того же с boto:

      import boto3

client = boto3.client(
    's3',
    aws_access_key_id='S3RVER',
    aws_secret_access_key='S3RVER'
)

что означает, когда вы запускаете serverless offline start вам необходимо установить идентификатор ключа доступа aws и секретный ключ доступа aws S3RVER, в противном случае будет использоваться реальное ведро.

также в файле readme есть инструкции по настройке s3localпрофиль aws, https://github.com/ar90n/serverless-s3-local#triggering-aws-events-offline

другой способ добиться этого - запустить вашу команду с переменными среды:

      AWS_ACCESS_KEY_ID=S3RVER AWS_SECRET_ACCESS_KEY=S3RVER serverless offline start

Таким образом, aws-sdk внутри вашего кода будет считывать правильные значения для автономного режима

Другие вопросы по тегам