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

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

사전 정의된 단계 사용

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

파일 복사

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

다음 파일 복사 단계는 file-test 대상 버킷의 test 폴더에 파일을 복사합니다.

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

이전 단계에서 만든 파일 복사... 가 포함된 워크플로 화면 버튼이 선택되었습니다.

버킷 및 키 세부 정보 제공

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

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

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

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

    작은 정보

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

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

참고

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

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

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

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

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

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

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

이 두 변수를 함께 사용하여 기능을 조합하여 사용할 수도 있습니다. 예:

  • 대상 키 접두사folder/${transfer:UserName}/${transfer:UploadDate}/(으)로 설정하면 중첩된 폴더가 생성됩니다. 예: folder/marymajor/2023-01-05/.

  • 대상 키 접두사folder/${transfer:UserName}-${transfer:UploadDate}/(으)로 설정하여 두 변수를 연결할 수 있습니다. 예: folder/marymajor-2023-01-05/.

복사 단계 IAM 권한

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

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

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

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

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

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

파일 복호화

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

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

  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
  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:::destination-bucket-name" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::destination-bucket-name/*" }, { "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:::DOC-EXAMPLE-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": "DOC-EXAMPLE-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"}]}'