

# S3 버킷에 펌웨어 파일 업로드 및 IAM 역할 추가
<a name="lorawan-upload-firmware-s3bucket"></a>

Amazon S3를 사용하여 *버킷*을 생성합니다. 버킷은 펌웨어 업데이트 파일을 저장할 수 있는 컨테이너입니다. 파일을 S3 버킷에 업로드하고 CUPS 서버가 버킷에서 업데이트 파일을 읽을 수 있도록 하는 IAM 역할을 추가할 수 있습니다. Amazon S3에 대한 자세한 내용은 [S3 시작하기](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html)를 참조하세요.

업로드하려는 펌웨어 업데이트 파일은 사용 중인 게이트웨이에 따라 다릅니다. [펌웨어 업데이트 파일 및 서명 생성](lorawan-script-fwupdate-sigkey.md)에 설명된 것과 유사한 절차를 수행한 경우 스크립트를 실행하여 생성된 `fwstation` 파일을 업로드합니다.

이 절차를 완료하는 데 약 20분이 소요됩니다.

**Topics**
+ [Amazon S3 버킷 생성 및 업데이트 파일 업로드](#lorawan-create-s3-bucket)
+ [S3 버킷을 읽을 수 있는 권한이 있는 IAM 역할 생성](#lorawan-s3-iam-permissions)
+ [다음 단계 검토](#lorawan-s3iam-next-steps)

## Amazon S3 버킷 생성 및 업데이트 파일 업로드
<a name="lorawan-create-s3-bucket"></a>

AWS Management Console을 사용하여 Amazon S3 버킷을 생성한 다음 펌웨어 업데이트 파일을 버킷에 업로드합니다.

**S3 버킷 생성**  
Amazon S3 버킷을 생성하려면 [Amazon S3 콘솔](https://console.aws.amazon.com/s3/home#)을 엽니다. 아직 로그인하지 않았다면 로그인하고 다음 단계를 수행하세요.

1. **버킷 생성**을 선택합니다.

1. **버킷 이름**에 대해 고유하고 의미 있는 이름(예: `iotwirelessfwupdate`)을 입력합니다. 버킷에 대한 권장 명명 규칙은 [https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html) 단원을 참조하세요.

1. AWS 리전을 LoRaWAN 게이트웨이 및 디바이스를 만드는 데 사용한 것으로 선택했는지, 버킷이 기본 권한을 사용하도록 **모든 퍼블릭 액세스 차단** 설정이 선택되어 있는지 확인합니다.

1. **버킷 버전 관리(Bucket versioning)**에서 **활성화(Enable)**를 선택합니다. 그러면 여러 가지 버전의 펌웨어 업데이트 파일을 동일한 버킷에 보관하는 데 도움이 됩니다.

1. **서버 측 암호화(Server-side encryption)**가 **비활성화(Disable)**로 설정되어 있는지 확인하고 **버킷 생성(Create bucket)**을 선택합니다.

**펌웨어 업데이트 파일 업로드**  
이제 AWS Management Console에 표시된 버킷 목록에서 버킷을 볼 수 있습니다. 버킷을 선택하고 다음 단계를 완료하여 파일을 업로드합니다.

1. 버킷을 선택한 다음 **업로드**를 선택합니다.

1. **파일 추가**를 클릭한 다음 펌웨어 업데이트 파일을 업로드합니다. [펌웨어 업데이트 파일 및 서명 생성](lorawan-script-fwupdate-sigkey.md)에서 설명한 절차를 수행한 경우, `fwstation` 파일을 업로드합니다. 그렇지 않으면 게이트웨이 제조업체에서 제공한 파일을 업로드합니다.

1. 모든 설정이 기본값으로 설정되어 있는지 확인합니다. **미리 정의된 ACL(Predefined ACLs)**이 **프라이빗(private)**으로 설정되어 있는지 확인하고 **업로드**를 선택하여 파일을 업로드합니다.

1. 업로드한 파일의 S3 URI를 복사합니다. 버킷을 선택하면 업로드한 파일이 **객체** 목록에 표시됩니다. 파일을 선택한 후 **S3 URI 복사**를 선택합니다. URI는 이전에 설명한 예제(`fwstation`)와 비슷한 버킷 이름을 지정한 경우 `s3://iotwirelessfwupdate/fwstation` 형태입니다. IAM 역할을 만들 때 S3 URI를 사용합니다.

## S3 버킷을 읽을 수 있는 권한이 있는 IAM 역할 생성
<a name="lorawan-s3-iam-permissions"></a>

이제 CUPS에 S3 버킷에서 펌웨어 업데이트 파일을 읽을 수 있는 권한을 부여하는 IAM 역할과 정책을 생성합니다.

**역할에 대한 IAM 정책 생성**  
AWS IoT Core for LoRaWAN 대상 역할에 대한 IAM 정책을 생성하려면 [IAM 콘솔의 정책 허브](https://console.aws.amazon.com/iam/home#/policies)를 열고 다음 단계를 완료합니다.

1. **정책 생성**을 선택한 후 **JSON** 탭을 선택합니다.

1. 편집기의 모든 내용을 삭제하고 이 정책 문서를 붙여 넣습니다. 정책은 `iotwireless` 버킷과 객체 내부에 저장된 펌웨어 업데이트 파일인 `fwstation`에 액세스할 수 있는 권한을 제공합니다.

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucketVersions",
                   "s3:ListBucket",
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::iotwirelessfwupdate/fwstation",
                   "arn:aws:s3:::iotwirelessfwupdate"
               ]
           }
       ]
   }
   ```

1. **정책 검토**를 선택하고 **이름**에 이 정책의 이름(예: `IoTWirelessFwUpdatePolicy`)을 입력합니다. 다음 절차에서 이 이름을 사용해야 합니다.

1. **정책 생성**을 선택합니다.

**연결된 정책으로 IAM 역할 생성**  
이제 IAM 역할을 생성하여 이전에 S3 버킷을 액세스하기 위해 생성한 정책을 연결합니다. [IAM 콘솔의 역할 허브](https://console.aws.amazon.com/iam/home#/roles)를 열고 다음 단계를 완료합니다.

1. **역할 생성**을 선택합니다.

1. **신뢰할 수 있는 엔터티 유형 선택(Select type of trusted entity)**에서 **다른 AWS 계정**을 선택합니다.

1. **계정 ID**에 AWS 계정 ID를 입력한 후 **다음: 권한**을 선택합니다.

1. 검색 상자에 이전 절차에서 생성한 IAM 정책의 이름을 입력합니다. 검색 결과에서 이전에 만든 IAM 정책(예: `IoTWirelessFwUpdatePolicy`)을 확인하고 선택합니다.

1. **Next: Tags(다음: 태그)**를 선택한 후 **Next: Review(다음: 검토)**를 선택합니다.

1. **역할 이름**에 이 역할의 이름(예: `IoTWirelessFwUpdateRole`)을 입력한 후 **역할 생성**을 선택합니다.

**IAM 역할의 신뢰 관계 편집**  
이전 단계를 실행한 후 표시되는 확인 메시지에서 생성한 역할 이름을 선택하고 편집합니다. 다음 신뢰 관계를 추가하기 위해 역할을 편집합니다.

1. 생성한 역할에 대한 **요약** 페이지에서 **신뢰 관계** 탭을 선택한 후 **신뢰 관계 편집**을 선택합니다.

1. **정책 문서**에서 `Principal` 속성을 다음 예시처럼 변경합니다.

   ```
   "Principal": { 
       "Service": "iotwireless.amazonaws.com" 
   },
   ```

   `Principal` 속성을 변경한 후 전체 정책 문서가 다음 예시와 같은 형식이어야 합니다.

   ```
   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "iotwireless.amazonaws.com"
         },
         "Action": "sts:AssumeRole",
         "Condition": {}
       }
     ]
   }
   ```

1. 변경 사항을 저장하고 종료하려면 **신뢰 정책 업데이트(Update Trust Policy)**를 선택합니다.

1. 사용자 역할에 대한 ARN을 획득합니다. IAM 역할을 선택하면 요약 섹션에 **역할 ARN**(예: `arn:aws:iam::123456789012:role/IoTWirelessFwUpdateRole`)이 표시됩니다. **역할 ARN**을 복사합니다.

## 다음 단계 검토
<a name="lorawan-s3iam-next-steps"></a>

이제 S3 버킷과 CUPS 서버가 S3 버킷을 읽을 수 있도록 하는 IAM 역할을 만들었으므로 다음 항목으로 이동하여 펌웨어 업데이트를 예약하고 실행합니다. 펌웨어 업데이트 수행을 위해 실행될 작업 정의를 생성할 때 입력할 수 있도록, 이전에 복사한 **S3 URI** 및 **역할 ARN**을 기록해 둡니다.