Here's an example AWS SAM CLI command to create a SAM template for this setup:
sam init --runtime python3.8
cd sam-app/
sam build
sam package --output-template-file packaged.yaml
sam deploy --template-file packaged.yaml --stack-name s3-resize-stack --capabilities CAPABILITY_IAM

Here's the Sam template: 

---
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  S3Bucket:
    Type: AWS::S3::Bucket
    DeletionPolicy: Retain
    Properties:
      BucketName: my-resize-bucket
      NotificationConfiguration:
        LambdaConfigurations:
          - Event: s3:ObjectCreated:*
            Function: !GetAtt LambdaResizeFunction.Arn

  LambdaResizeFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: resize_function.py
      Handler: index.handler
      Runtime: python3.8
      Environment:
        Variables:
          S3_BUCKET: !Ref S3Bucket
      Policies:
        - S3CrudPolicy:
            BucketName: !Ref S3Bucket

And here's an example Python script for the Lambda function that resizes the uploaded file:

import boto3

def handler(event, context):
    s3 = boto3.client('s3')
    bucket_name = os.environ['S3_BUCKET']

    for record in event['Records']:
        file_key = record['s3']['object']['key']
        # resize the file using the boto3 library
        # save the resized file back to S3 with the same key
        s3.upload_file(resized_file, bucket_name, file_key)

This setup ensures that the Lambda function is triggered only once per new object uploaded and resizes the file using the same key.
ต่อไปนี้เป็นตัวอย่างคำสั่ง AWS SAM CLI เพื่อสร้างเทมเพลต SAM สำหรับการตั้งค่านี้: sam init --runtime python3.8 cd sam-app/ sam build sam package --output-template-file packaged.yaml samploy --template-file packaged.yaml --stack-name s3-resize-stack --capabilities CAPABILITY_IAM นี่คือเทมเพลต Sam: --- AWSTemplateFormatVersion: '2010-09-09' การแปลง: AWS::Serverless-2016-10-31 แหล่งข้อมูล: S3Bucket: ประเภท: AWS::S3::Bucket DeletionPolicy: รักษาคุณสมบัติ: BucketName: my-resize-bucket การกำหนดค่าการแจ้งเตือน: LambdaConfigurations: - เหตุการณ์: s3:ObjectCreated:* ฟังก์ชัน: !GetAtt LambdaResizeFunction.Arn LambdaResizeFunction: ประเภท: AWS::Serverless:: คุณสมบัติของฟังก์ชัน: CodeUri: resize_function.py ตัวจัดการ: index.handler รันไทม์: python3.8 สภาพแวดล้อม: ตัวแปร: S3_BUCKET: !Ref S3Bucket Policies: - S3CrudPolicy: BucketName: !Ref S3Bucket และนี่คือตัวอย่างสคริปต์ Python สำหรับฟังก์ชัน Lambda ที่ปรับขนาด ไฟล์ที่อัปโหลด: นำเข้า boto3 def handler (เหตุการณ์, บริบท): s3 = boto3.client ('s3') bucket_name = os.environ ['S3_BUCKET'] สำหรับบันทึกในเหตุการณ์ ['Records']: file_key = record ['s3' ]['object']['key'] # ปรับขนาดไฟล์โดยใช้ไลบรารี boto3 # บันทึกไฟล์ที่ปรับขนาดแล้วกลับไปเป็น S3 ด้วยคีย์เดียวกัน s3.upload_file(resize_file, bucket_name, file_key) การตั้งค่านี้ช่วยให้แน่ใจว่าฟังก์ชัน Lambda ถูกทริกเกอร์ เพียงครั้งเดียวต่อออบเจ็กต์ใหม่ที่อัปโหลดและปรับขนาดไฟล์โดยใช้คีย์เดียวกัน
spam lang_mismatch quality