ABOUT ME

Today
Yesterday
Total
  • aws - lambda 가 작동하기 위한 권한 찾기
    대학 수업/클라우드 2024. 11. 19. 20:55

    구성방안 

    S3 - html 문서 기반 웹 호스팅 

    0) block public access

    1) static web hosting : name, enable

    2) bucket policy

    {
        "Version": "2012-10-17",
        "Id": "Policy1732509371725",
        "Statement": [
            {
                "Sid": "Stmt1732509370693",
                "Effect": "Allow",
                "Principal": "*",
                "Action": [
                    "s3:GetObject",
                    "s3:PutObject"
                ],
                "Resource": "arn:aws:s3:::sokectket/*"
            }
        ]
    }

    3) cors

    [
        {
            "AllowedHeaders": [
                "*"
            ],
            "AllowedMethods": [
                "PUT",
                "POST"
            ],
            "AllowedOrigins": [
                "*"
            ],
            "ExposeHeaders": []
        }
    ]

    4) check api gateway address

    꼭 저장하고 html 파일 업로드 할 것

     

     

    API Gateway - 웹에서 보낸 요청 받는 곳(Router)

    1) deploy

     

    Lambda - Json 파일 받아서 내용 정합성 및 변환 후 dynamo로 전달

    1) 중간 중간에 각 단계 확인 가능한 print()삽입

    2) Role - Policies

     

     

    CloudWatch Log - Lambda 의 작동 환경 기록

    => lambda 작동 시 자동으로 기록됨 : 작동해야 기록됨

     

    DynamoDB - 파일 받아서 기록, 웹에서 호출 시 반환

     

     

     

     

    html : Get, Post 등의 클라이언트의 입력

    람다 : 각각의 html명령을 받으면 ~ 이렇게 처리하라

    DB : 값의 저장 및 반환

     

    -> 각각이 개별 기기 : 보안을 위해 상호작용을 위한 권한 부여가 제한되어 있음

    --> 내가 직접 User, Role, Policy을 통해 Permission 설정하여 각 단말간 연결성을 만들어야 함

    + CORS

     


    1) 각 단말별 필요로 되는 권한은 무엇인가?

    서버내의 각 기능별 연결 policy : s3 내에서 어떤 기능을 작동할 수 있게 할 것인가?

     

    S3에 웹사이트 개시했고, 사용자로부터 입력을 받기에 cors(Cross-Origin Resource Sharing)

    : 외부 입력값을 받아 올 것인가?

     

    2) cors와 policy의 차이

    외부 간섭권 // 서버 내부 연결성

     

     

    3) s3의 권한 중 putobject는 html의 post 기능을 잘 반영할 수 있는가? - 아닐것으로 예상됨

    내부 html문서를 수정할 필요가 없다.

    하지만 CORS의 post 기능을 활성화하여 입력을 받을 필요는 있다.

     

     

    4) DB에 대한 Get호출은 어떻게 이뤄지는가?

    table = dynamodb.Table('Animals')
    ...
            try:
                response = table.scan()
                items = response.get('Items', [])
                return {
                    'statusCode': 200,
                    'headers': {
                        'Content-Type': 'application/json',
                        'Access-Control-Allow-Origin': '*'  # CORS 설정
                    },
                    'body': json.dumps(items)
                }

     

     

Designed by Tistory.