사전 정의된 단계 사용 - AWS Transfer Family

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

사전 정의된 단계 사용

워크플로를 만들 때 이 항목에 설명된 다음과 같은 사전 정의된 단계 중 하나를 추가하도록 선택할 수 있습니다. 또한 사용자 지정 파일 처리 단계 추가를 선택할 수도 있습니다. 자세한 내용은 사용자 지정 파일 처리 단계 사용를 참조하세요.

파일 복사

파일 복사 단계는 업로드된 파일의 사본을 새 Amazon S3 위치에 생성합니다. 현재는 Amazon S3에서만 파일 복사 단계를 사용할 수 있습니다.

다음 파일 복사 단계는 파일을 amzn-s3-demo-destination-buckettest 폴더에 복사합니다.

파일 복사 단계가 워크플로의 첫 단계가 아닌 경우 파일 위치를 지정할 수 있습니다. 파일 위치를 지정하면 이전 단계에서 사용한 파일 또는 업로드된 원본 파일을 복사할 수 있습니다. 이 기능을 사용하면 파일 보관 및 기록 보존을 위해 원본 파일을 그대로 유지하면서 원본 파일의 사본을 여러 개 만들 수 있습니다. 예는 태그 및 삭제 워크플로 예시를 참조하세요.

이전 단계에서 생성한 파일 복사... 버튼이 선택된 워크플로 화면.

버킷 및 키 세부 정보 제공

파일 복사 단계의 대상 버킷 이름과 키를 제공해야 합니다. 키는 경로 이름 또는 파일 이름일 수 있습니다. 키를 경로 이름으로 취급할지 파일 이름으로 처리할지는 키 끝에 슬래시(/) 문자를 사용하는지 여부에 따라 결정됩니다.

마지막 문자가 /인 경우 파일은 폴더에 복사되며 이름은 변경되지 않습니다. 최종 문자가 영숫자인 경우 업로드한 파일의 이름이 키 값으로 바뀝니다. 이 경우 해당 이름의 파일이 이미 있는 경우 기존 항목 덮어쓰기 필드의 설정에 따라 동작이 달라집니다.

  • 기존 파일 덮어쓰기를 선택하면 기존 파일이 처리 중인 파일로 대체됩니다.

  • 기존 항목 덮어쓰기를 선택하지 않은 경우 아무 일도 일어나지 않고 워크플로 처리가 중지됩니다.

    작은 정보

    동일한 파일 경로에서 동시 쓰기를 실행하면 파일을 덮어쓸 때 예상치 못한 동작이 발생할 수 있습니다.

예를 들어 키 값이 test/인 경우 업로드한 파일이 test 폴더에 복사됩니다. 키 값이 test/today인 경우(및 기존 파일 덮어쓰기가 선택된 경우) 업로드하는 모든 파일이 test 폴더에 today(으)로 이름이 지정된 파일에 복사되고 이후의 각 파일은 이전 파일을 덮어씁니다.

참고

Amazon S3는 버킷과 객체를 지원하며 계층 구조가 없습니다. 하지만 객체 키 이름에 접두사와 구분 기호를 사용하여 계층 구조를 나타내고 폴더와 비슷한 방식으로 데이터를 구성할 수 있습니다.

파일 복사 단계에서 이름이 지정된 변수를 사용하세요.

파일 복사 단계에서 변수를 사용하여 파일을 사용자별 폴더에 동적으로 복사할 수 있습니다. 현재는 ${transfer:UserName} 또는 ${transfer:UploadDate}를 변수로 사용하여 파일을 업로드하는 특정 사용자의 대상 위치 또는 현재 날짜를 기준으로 파일을 복사할 수 있습니다.

다음 예에서는 사용자가 파일을 richard-roe 업로드하면 파일이 amzn-s3-demo-destination-bucket/richard-roe/processed/ 폴더에 복사됩니다. 사용자가mary-major 파일을 업로드하면 파일이 amzn-s3-demo-destination-bucket/mary-major/processed/ 폴더에 복사됩니다.

를 사용하여 파라미터화된 버킷과 키를 보여주는 복사 단계의 파라미터 화면입니다UserName.

마찬가지로 ${transfer:UploadDate}를 변수로 사용하여 현재 날짜의 이름이 지정된 대상 위치에 파일을 복사할 수 있습니다. 다음 예에서 2022년 2월 1일에 대상을 ${transfer:UploadDate}/processed으로 설정하면 업로드된 파일이 amzn-s3-demo-destination-bucket/2022-02-01/processed/ 폴더에 복사됩니다.

를 사용하여 파라미터화된 버킷과 키를 보여주는 복사 단계의 파라미터 화면입니다UploadDate.

이 두 변수를 함께 사용하여 기능을 조합하여 사용할 수도 있습니다. 예를 들어 대상 키 접두사를 로 설정하면와 같은 중첩 폴더가 folder/${transfer:UserName}/${transfer:UploadDate}/생성됩니다folder/marymajor/2023-01-05/.

복사 단계 IAM 권한

복사 단계를 성공적으로 수행하려면 워크플로의 실행 역할에 다음 권한이 포함되어 있어야 합니다.

{ "Sid": "ListBucket", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" }
참고

s3:ListBucket 권한은 기존 항목 덮어쓰기를 선택하지 않은 경우에만 필요합니다. 이 권한은 버킷을 검사하여 같은 이름의 파일이 이미 존재하는지 확인합니다. 기존 파일 덮어쓰기를 선택한 경우 워크플로에서 파일을 확인할 필요 없이 그냥 쓰기만 하면 됩니다.

Amazon S3 파일에 태그가 있는 경우 IAM 정책에 하나 또는 두 개의 권한을 추가해야 합니다.

  • 버전이 지정되지 않은 Amazon S3 파일에 s3:GetObjectTagging을 추가합니다.

  • 버전이 지정된 Amazon S3 파일에 s3:GetObjectVersionTagging을 추가합니다.

파일 복호화

AWS 스토리지 블로그에는 Transfer Family Managed 워크플로, PGP 및를 사용한 암호화 및 암호화 해제를 사용하여 코드를 작성하지 않고 파일을 간단하게 해독하는 방법을 설명하는 게시물이 있습니다 AWS Transfer Family.

지원되는 대칭 암호화 알고리즘

PGP 복호화의 경우 Transfer Family는 PGP 파일 내에서 실제 파일 데이터를 암호화하는 데 사용되는 대칭 암호화 알고리즘을 지원합니다.

워크플로에서 PGP 복호화 사용

Transfer Family는 Pretty Good Privacy(PGP) 복호화를 기본적으로 지원합니다. SFTP, FTPS 또는 FTP를 통해 Amazon Simple Storage Service(S3) 또는 Amazon Elastic File System(Amazon EFS)에 업로드된 파일에서 PGP 복호화를 사용할 수 있습니다.

PGP 복호화를 사용하려면 파일 복호화에 사용할 PGP 프라이빗 키를 생성하고 저장해야 합니다. 그러면 사용자가 Transfer Family 서버에 파일을 업로드하기 전에 해당 PGP 암호화 키를 사용하여 파일을 암호화할 수 있습니다. 암호화된 파일을 받은 후 워크플로에서 해당 파일을 복호화할 수 있습니다. 자세한 자습서는 파일 복호화를 위한 관리형 워크플로 설정를 참조하세요.

지원되는 PGP 알고리즘 및 권장 사항에 대한 자세한 내용은 섹션을 참조하세요PGP 암호화 및 복호화 알고리즘.

워크플로에서 PGP 복호화 사용
  1. 워크플로를 호스팅할 Transfer Family 서버를 식별하거나 새 서버를 생성합니다. PGP 키를 AWS Secrets Manager 에 올바른 암호 이름으로 저장하려면 먼저 서버 ID가 있어야 합니다.

  2. PGP 키를 필요한 보안 암호 이름으로 AWS Secrets Manager 에 저장합니다. 자세한 내용은 PGP 키 관리을 참조하세요. 워크플로는 Secrets Manager의 암호 이름을 기반으로 복호화에 사용할 올바른 PGP 키를 자동으로 찾을 수 있습니다.

    참고

    Secrets Manager에 암호를 저장하면 AWS 계정 에 요금이 발생합니다. 요금에 대한 자세한 내용은 AWS Secrets Manager 요금을 참조하세요.

  3. PGP 키 쌍을 사용하여 파일을 암호화합니다. (지원되는 클라이언트 목록은 지원되는 PGP 클라이언트를 참조하세요.) 명령줄을 사용하는 경우 다음 명령을 실행하세요. 이 명령을 사용하려면 username@example.com을 PGP 키 쌍을 만들 때 사용한 이메일 주소로 바꾸세요. testfile.txt를 암호화할 파일의 이름으로 바꿉니다.

    gpg -e -r username@example.com testfile.txt
    중요

    AWS Transfer Family 워크플로에 사용할 파일을 암호화할 때는 항상 -r 파라미터를 사용하여 비익명 수신자를 지정해야 합니다. 익명 암호화(수신자를 지정하지 않음)는 시스템이 복호화에 사용할 키를 식별할 수 없기 때문에 워크플로에서 복호화 실패를 일으킬 수 있습니다. 이 문제에 대한 디버깅 정보는에서 확인할 수 있습니다익명 수신자 암호화 문제 해결.

  4. 암호화된 파일을 Transfer Family 서버에 업로드합니다.

  5. 워크플로에서 복호화 단계를 구성합니다. 자세한 내용은 복호화 단계 추가를 참조하세요.

복호화 단계 추가

복호화 단계는 워크플로의 일부로 Amazon S3 또는 Amazon EFS에 업로드된 암호화된 파일을 복호화합니다. 복호화 구성에 대한 자세한 내용은 워크플로에서 PGP 복호화 사용을 참조하세요.

워크플로의 복호화 단계를 생성할 때는 복호화한 파일의 대상을 지정해야 합니다. 대상 위치에 파일이 이미 있는 경우 기존 파일을 덮어쓸지 여부도 선택해야 합니다. Amazon CloudWatch Logs를 사용하여 실시간으로 복호화 워크플로 결과를 모니터링하고 각 파일에 대한 감사 로그를 가져올 수 있습니다.

해당 단계에서 파일 복호화 타입을 선택하면 파라미터 구성 페이지가 나타납니다. PGP 복호화 파라미터 구성 섹션의 값을 입력합니다.

사용 가능한 옵션은 다음과 같습니다.

  • 단계 이름 - 단계를 설명하는 이름을 입력합니다.

  • 파일 위치 - 파일 위치를 지정하여 이전 단계에서 사용한 파일 또는 업로드된 원본 파일을 복호화할 수 있습니다.

    참고

    이 단계가 워크플로의 첫 번째 단계인 경우에는 이 파라미터를 사용할 수 없습니다.

  • 복호화된 파일의 대상 — Amazon S3 버킷 또는 Amazon EFS 파일 시스템을 복호화된 파일의 대상으로 선택합니다.

    • Amazon S3를 선택하는 경우 대상 버킷 이름과 대상 키 접두사를 제공해야 합니다. 사용자 이름을 기준으로 대상 키 접두사를 파라미터화하려면 대상 키 접두사${transfer:UserName}을 입력합니다. 마찬가지로 업로드 날짜별로 대상 키 접두사를 파라미터화하려면 대상 키 접두사${Transfer:UploadDate}를 입력합니다.

    • Amazon EFS를 선택하는 경우 대상 파일 시스템과 경로를 제공해야 합니다.

    참고

    여기서 선택하는 스토리지 옵션은 이 워크플로가 연결된 Transfer Family 서버에서 사용하는 스토리지 시스템과 일치해야 합니다. 그렇지 않으면 이 워크플로를 실행하려고 시도하는 동안 오류가 발생합니다.

  • 기존 파일 덮어쓰기 - 파일을 업로드했는데 같은 파일 이름을 가진 파일이 대상에 이미 있는 경우 동작은 이 파라미터의 설정에 따라 달라집니다.

    • 기존 파일 덮어쓰기를 선택하면 기존 파일이 처리 중인 파일로 대체됩니다.

    • 기존 항목 덮어쓰기를 선택하지 않은 경우 아무 일도 일어나지 않고 워크플로 처리가 중지됩니다.

      작은 정보

      동일한 파일 경로에서 동시 쓰기를 실행하면 파일을 덮어쓸 때 예상치 못한 동작이 발생할 수 있습니다.

다음 스크린샷은 파일 복호화 단계에서 선택할 수 있는 옵션의 예를 보여줍니다.

샘플 값이 포함된 PGP 복호화 파라미터 구성 섹션을 보여주는 AWS Transfer Family 콘솔입니다.

복호화 단계를 위한 IAM 권한

복호화 단계를 성공적으로 수행하려면 워크플로의 실행 역할에 다음 권한이 포함되어 있어야 합니다.

{ "Sid": "ListBucket", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" }, { "Sid": "Decrypt", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", ], "Resource": "arn:aws:secretsmanager:region:account-id:secret:aws/transfer/*" }
참고

s3:ListBucket 권한은 기존 항목 덮어쓰기를 선택하지 않은 경우에만 필요합니다. 이 권한은 버킷을 검사하여 같은 이름의 파일이 이미 존재하는지 확인합니다. 기존 파일 덮어쓰기를 선택한 경우 워크플로에서 파일을 확인할 필요 없이 그냥 쓰기만 하면 됩니다.

Amazon S3 파일에 태그가 있는 경우 IAM 정책에 하나 또는 두 개의 권한을 추가해야 합니다.

  • 버전이 지정되지 않은 Amazon S3 파일에 s3:GetObjectTagging을 추가합니다.

  • 버전이 지정된 Amazon S3 파일에 s3:GetObjectVersionTagging을 추가합니다.

파일 태그 지정

추가 다운스트림 처리를 위해 인입 파일에 태그를 지정하려면 태그 단계를 사용하세요. 인입 파일에 할당하려는 태그의 값을 입력합니다. 현재 태그 작업은 Transfer Family 서버 스토리지로 Amazon S3를 사용하는 경우에만 지원됩니다.

다음 태그 단계 예에서는 각각 scan_outcomeclean를 태그 키와 값으로 할당합니다.

태그 지정 단계의 세부 정보를 보여주는 워크플로 화면입니다.

태그 단계를 성공적으로 수행하려면 워크플로의 실행 역할에 다음 권한이 포함되어 있어야 합니다.

{ "Sid": "Tag", "Effect": "Allow", "Action": [ "s3:PutObjectTagging", "s3:PutObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }
참고

워크플로에 복사 또는 복호화 단계 전에 실행되는 태그 단계가 포함되어 있는 경우 IAM 정책에 하나 또는 두 개의 권한을 추가해야 합니다.

  • 버전이 지정되지 않은 Amazon S3 파일에 s3:GetObjectTagging을 추가합니다.

  • 버전이 지정된 Amazon S3 파일에 s3:GetObjectVersionTagging을 추가합니다.

파일 삭제

이전 워크플로 단계에서 처리된 파일을 삭제하거나 원래 업로드된 파일을 삭제하려면 파일 삭제 단계를 사용하세요.

삭제 단계의 세부 정보를 보여주는 워크플로 화면입니다.

삭제 단계를 성공적으로 수행하려면 워크플로의 실행 역할에 다음 권한이 포함되어 있어야 합니다.

{ "Sid": "Delete", "Effect": "Allow", "Action": [ "s3:DeleteObjectVersion", "s3:DeleteObject" ], "Resource": "arn:aws:secretsmanager:region:account-ID:secret:aws/transfer/*" }

워크플로에 명명된 변수

복사 및 복호화 단계의 경우 변수를 사용하여 작업을 동적으로 수행할 수 있습니다. 현재는 다음과 같은 명명된 변수를 AWS Transfer Family 지원합니다.

  • 업로드하는 사용자를 기준으로 ${transfer:UserName}을 사용하여 대상으로 파일을 복사하거나 암호를 해독합니다.

  • 현재 날짜를 기준으로 ${transfer:UploadDate}를 사용하여 대상으로 파일을 복사하거나 암호를 해독합니다.

태그 및 삭제 워크플로 예시

다음 예는 데이터 분석 플랫폼과 같은 다운스트림 애플리케이션에서 처리해야 하는 수신 파일에 태그를 지정하는 워크플로를 보여줍니다. 인입 파일에 태그를 지정한 후 워크플로는 원래 업로드된 파일을 삭제하여 스토리지 비용을 절약합니다.

Console
태그 및 이동 워크플로 예
  1. https://console.aws.amazon.com/transfer/ AWS Transfer Family 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 워크플로를 선택합니다.

  3. 워크플로 페이지에서 워크플로 생성을 선택합니다.

  4. 워크플로 생성 페이지에서 설명을 입력합니다. 이 설명은 워크플로 페이지에 표시됩니다.

  5. 첫 번째 단계(복사)를 추가합니다.

    1. 공칭 단계 섹션에서 단계 추가를 선택합니다.

    2. 파일 복사를 선택한 후 다음을 선택합니다.

    3. 단계 이름을 입력한 다음 대상 버킷과 키 접두사를 선택합니다.

      복사 단계의 세부 정보와 대상 버킷 및 키 접두사를 보여주는 워크플로 화면입니다.
    4. 다음을 선택한 다음 해당 단계에 대한 세부 정보를 검토합니다.

    5. 단계 생성을 선택하여 단계를 추가하고 계속합니다.

  6. 두 번째 단계(태그)를 추가합니다.

    1. 공칭 단계 섹션에서 단계 추가를 선택합니다.

    2. 파일 태그 지정을 선택한 후 다음을 선택합니다.

    3. 단계 이름을 입력합니다.

    4. 파일 위치의 경우 이전 단계에서 만든 파일에 태그 지정을 선택합니다.

    5. 을 입력합니다.

      태그 지정 워크플로 단계의 구성 화면. 이전 단계에서 생성한 파일에 태그 지정 라디오 버튼이 선택되어 있습니다.
    6. 다음을 선택한 다음 해당 단계에 대한 세부 정보를 검토합니다.

    7. 단계 생성을 선택하여 단계를 추가하고 계속합니다.

  7. 세 번째 단계 추가(삭제).

    1. 공칭 단계 섹션에서 단계 추가를 선택합니다.

    2. 파일 삭제를 선택하고 다음을 선택합니다.

      원본 소스 파일 삭제 라디오 버튼이 선택된 삭제 워크플로 단계의 구성 화면입니다.
    3. 단계 이름을 입력합니다.

    4. 파일 위치에서 원본 소스 파일 삭제를 선택합니다.

    5. 다음을 선택한 다음 해당 단계에 대한 세부 정보를 검토합니다.

    6. 단계 생성을 선택하여 단계를 추가하고 계속합니다.

  8. 워크플로 구성을 검토한 다음 워크플로 생성을 선택합니다.

CLI
태그 및 이동 워크플로 예
  1. 다음 코드를 파일에 저장합니다. 예: tagAndMoveWorkflow.json. 각 user input placeholder를 사용자의 정보로 바꿉니다.

    [ { "Type": "COPY", "CopyStepDetails": { "Name": "CopyStep", "DestinationFileLocation": { "S3FileLocation": { "Bucket": "amzn-s3-demo-bucket", "Key": "test/" } } } }, { "Type": "TAG", "TagStepDetails": { "Name": "TagStep", "Tags": [ { "Key": "name", "Value": "demo" } ], "SourceFileLocation": "${previous.file}" } }, { "Type": "DELETE", "DeleteStepDetails":{ "Name":"DeleteStep", "SourceFileLocation": "${original.file}" } } ]

    첫 번째 단계에서는 업로드된 파일을 새 Amazon S3 위치에 복사합니다. 두 번째 단계에서는 새 위치에 복사된 파일(previous.file)에 태그(키-값 쌍)를 추가합니다. 마지막으로 세 번째 단계에서는 원본 파일(original.file)을 삭제합니다.

  2. 저장된 파일에서 워크플로를 생성합니다. 각 user input placeholder를 사용자의 정보로 바꿉니다.

    aws transfer create-workflow --description "short-description" --steps file://path-to-file --region region-ID

    예:

    aws transfer create-workflow --description "copy-tag-delete workflow" --steps file://tagAndMoveWorkflow.json --region us-east-1
    참고

    파일을 사용하여 파라미터를 로드하는 방법에 대한 자세한 내용은 파일에서 파라미터를 로드하는 방법을 참조하세요.

  3. 기존 서버를 업데이트합니다.

    참고

    이 단계에서는 이미 Transfer Family 서버가 있고 이 서버에 워크플로를 연결하려는 것으로 가정합니다. 그렇지 않은 경우 SFTP, FTPS 또는 FTP 서버 엔드포인트 구성를 참조하세요. 각 user input placeholder를 사용자의 정보로 바꿉니다.

    aws transfer update-server --server-id server-ID --region region-ID --workflow-details '{"OnUpload":[{ "WorkflowId": "workflow-ID","ExecutionRole": "execution-role-ARN"}]}'

    예:

    aws transfer update-server --server-id s-1234567890abcdef0 --region us-east-2 --workflow-details '{"OnUpload":[{ "WorkflowId": "w-abcdef01234567890","ExecutionRole": "arn:aws:iam::111111111111:role/nikki-wolf-execution-role"}]}'