Redis(클러스터 모드 활성화됨)를 위한 온라인 리샤딩 및 샤드 재분배 - Amazon ElastiCache for Redis

Redis(클러스터 모드 활성화됨)를 위한 온라인 리샤딩 및 샤드 재분배

Amazon ElastiCache for Redis 버전 3.2.10 이상에서 온라인 리샤딩 및 샤드 재분배를 사용하여 중단 시간 없이 동적으로 ElastiCache for Redis(클러스터 모드 활성화됨)를 조정할 수 있습니다. 이러한 접근 방식은 조정 또는 재분배 진행 중에도 클러스터에서 계속해서 요청을 처리할 수 있음을 의미합니다.

다음을 수행할 수 있습니다.

  • 스케일 아웃 - Redis(클러스터 모드 활성화됨) 클러스터(복제 그룹)에 샤드(노드 그룹)를 추가해 읽기 및 쓰기 용량을 늘립니다.

    복제 그룹에 샤드를 하나 이상 추가하는 경우 각 샤드의 노드 수는 기존의 가장 작은 샤드에 있는 노드 수와 동일합니다.

  • 스케일 인 - Redis(클러스터 모드 활성화됨) 클러스터에서 샤드를 제거해 읽기 및 쓰기 용량을 줄여 비용을 절감합니다.

  • 재분배 - ElastiCache for Redis(클러스터 모드 활성화됨) 클러스터에서 샤드 간에 키스페이스를 이동해 샤드 간에 키스페이스가 가급적 균일하게 분배되도록 합니다.

다음을 수행할 수 없습니다.

  • 독립적으로 샤드 구성:

    샤드의 키스페이스는 독립적으로 지정할 수 없습니다. 이렇게 하려면 오프라인 프로세스를 사용해야 합니다.

현재, ElastiCache for Redis 온라인 리샤딩 및 재분배에는 다음 제한 사항이 적용됩니다.

  • 이러한 프로세스를 수행하려면 Redis 엔진 버전 3.2.10 이상이 필요합니다. 엔진 버전 업그레이드에 대한 자세한 내용은 엔진 버전 업그레이드 섹션을 참조하세요.

  • 슬롯 또는 키스페이스와 대용량 항목에 대한 제한 사항이 있습니다.

    샤드 내 키에 대용량 항목이 포함되어 있으면 확장 또는 재분배 시 해당 키가 새 샤드로 마이그레이션되지 않습니다. 이 기능으로 인해 불균형 샤드가 발생할 수 있습니다.

    샤드 내 키에 대용량 항목(직렬화 후 256MB보다 큰 항목)이 포함되어 있으면 축소 시 해당 샤드는 삭제되지 않습니다. 이 기능으로 인해 일부 샤드가 삭제되지 않을 수 있습니다.

  • 확장 시 새 샤드의 노드 수는 기존의 가장 작은 노드 수와 동일합니다.

  • 확장 시 기존의 모든 샤드에 공통된 태그는 새 샤드로 복사됩니다.

  • 글로벌 데이터 스토어 클러스터를 스케일 아웃할 때, ElastiCache는 기존 노드 중 하나에서 새 노드로 함수를 자동으로 복제하지 않습니다. 클러스터를 스케일 아웃한 후, 새 샤드에 함수를 로드하여 모든 샤드가 동일한 함수를 갖도록 하는 것이 좋습니다.

참고

Elasticache for Redis 버전 7 이상에서: 클러스터를 스케일 아웃할 때, ElastiCache는 (임의로 선택된) 기존 노드 중 하나에 로드된 함수를 새 노드에 자동으로 복제합니다. 애플리케이션이 Redis 함수를 사용하는 경우, 모든 함수를 모든 샤드에 로드해야 스케일 아웃으로 인해 ElastiCache for Redis 클러스터가 샤드마다 다른 함수 정의로 종결되는 상황을 방지할 수 있습니다.

자세한 내용은 모범 사례: 온라인 클러스터 크기 조정 섹션을 참조하세요.

AWS Management Console, AWS CLI 및 ElastiCache API를 사용하여 ElastiCache for Redis(클러스터 모드 활성화됨) 클러스터를 수평적으로 조정 또는 재분배할 수 있습니다.

온라인 리샤딩을 사용하여 샤드 추가

AWS Management Console, AWS CLI 또는 ElastiCache API를 사용하여 Redis(클러스터 모드 활성화됨) 클러스터에 샤드를 추가할 수 있습니다. Redis(클러스터 모드 활성화됨) 클러스터에 샤드를 추가하면 기존 샤드의 모든 태그가 새 샤드로 복사됩니다.

주제

    AWS Management Console을 사용하여 Redis(클러스터 모드 활성화됨) 클러스터에 샤드를 하나 이상 추가할 수 있습니다. 다음 절차에서는 이러한 프로세스를 설명합니다.

    Redis(클러스터 모드 활성화됨) 클러스터에 샤드를 추가하려면
    1. https://console.aws.amazon.com/elasticache/에서 ElastiCache 콘솔을 엽니다.

    2. 탐색 창에서 Redis 클러스터(Redis clusters)를 선택합니다.

    3. 샤드를 추가하고자 하는 Redis(클러스터 모드 활성화됨) 클러스터의 이름 왼쪽에 있는 상자가 아닌 클러스터의 이름을 찾아 선택합니다.

      작은 정보

      Redis(클러스터 모드 활성화됨)는 모드 열에 클러스터링된 Redis를 표시합니다.

    4. [Add shard]를 선택합니다.

      1. [Number of shards to be added]에서 이 클러스터에 추가할 샤드 수를 선택합니다.

      2. [Availability zone(s)]에서는 [No preference] 또는 [Specify availability zones]을 선택합니다.

      3. [Specify availability zones]를 선택한 경우 각 샤드의 각 노드에 대해 [Availability Zones] 목록에서 노드의 가용 영역을 선택합니다.

      4. 추가(Add)를 선택합니다.

    다음 프로세스에서는 AWS CLI를 사용해 샤드를 추가하여 Redis(클러스터 모드 활성화됨) 클러스터에서 샤드를 재구성하는 방법을 설명합니다.

    modify-replication-group-shard-configuration에 다음 파라미터를 사용합니다.

    파라미터
    • --apply-immediately - 필수입니다. 즉시 시작할 샤드 재구성 작업을 지정합니다.

    • --replication-group-id - 필수입니다. 샤드 재구성 작업을 수행할 복제 그룹(클러스터)을 지정합니다.

    • --node-group-count - 필수입니다. 작업 완료 시 존재할 샤드(노드 그룹) 수를 지정합니다. 샤드를 추가하는 경우 --node-group-count의 값은 현재 샤드 수보다 커야 합니다.

      경우에 따라 --resharding-configuration을 사용해 복제 그룹의 각 노드에 대한 가용 영역을 지정할 수 있습니다.

    • --resharding-configuration – 선택 사항. 복제 그룹 내에 있는 각 샤드의 개별 노드에 대한 기본 가용 영역 목록입니다. 이 파라미터는 --node-group-count의 값이 현재 샤드 수보다 큰 경우에만 사용합니다. 샤드 추가 시 이 파라미터를 사용하지 않으면 Amazon ElastiCache에서는 새 노드에 대해 가용 영역을 선택합니다.

    다음 예에서는 Redis(클러스터 모드 활성화됨) 클러스터 my-cluster에서 샤드 4개에 대한 키스페이스를 재구성합니다. 또한 이 예에서는 각 샤드 내 개별 노드에 대한 가용 영역을 지정합니다. 작업이 즉시 시작됩니다.

    예 - 샤드 추가

    Linux, macOS 또는 Unix의 경우는 다음과 같습니다.

    aws elasticache modify-replication-group-shard-configuration \ --replication-group-id my-cluster \ --node-group-count 4 \ --resharding-configuration \ "PreferredAvailabilityZones=us-east-2a,us-east-2c" \ "PreferredAvailabilityZones=us-east-2b,us-east-2a" \ "PreferredAvailabilityZones=us-east-2c,us-east-2d" \ "PreferredAvailabilityZones=us-east-2d,us-east-2c" \ --apply-immediately

    Windows의 경우:

    aws elasticache modify-replication-group-shard-configuration ^ --replication-group-id my-cluster ^ --node-group-count 4 ^ --resharding-configuration ^ "PreferredAvailabilityZones=us-east-2a,us-east-2c" ^ "PreferredAvailabilityZones=us-east-2b,us-east-2a" ^ "PreferredAvailabilityZones=us-east-2c,us-east-2d" ^ "PreferredAvailabilityZones=us-east-2d,us-east-2c" ^ --apply-immediately

    자세한 내용은 AWS CLI 설명서에서 modify-replication-group-shard-configuration을 참조하세요.

    ElastiCache API에서 ModifyReplicationGroupShardConfiguration 작업을 사용해 Redis(클러스터 모드 활성화됨) 클러스터 내 샤드를 온라인으로 재구성할 수 있습니다.

    ModifyReplicationGroupShardConfiguration에 다음 파라미터를 사용합니다.

    파라미터
    • ApplyImmediately=true - 필수입니다. 즉시 시작할 샤드 재구성 작업을 지정합니다.

    • ReplicationGroupId - 필수입니다. 샤드 재구성 작업을 수행할 복제 그룹(클러스터)을 지정합니다.

    • NodeGroupCount - 필수입니다. 작업 완료 시 존재할 샤드(노드 그룹) 수를 지정합니다. 샤드를 추가하는 경우 NodeGroupCount의 값은 현재 샤드 수보다 커야 합니다.

      경우에 따라 ReshardingConfiguration을 사용해 복제 그룹의 각 노드에 대한 가용 영역을 지정할 수 있습니다.

    • ReshardingConfiguration – 선택 사항. 복제 그룹 내에 있는 각 샤드의 개별 노드에 대한 기본 가용 영역 목록입니다. 이 파라미터는 NodeGroupCount의 값이 현재 샤드 수보다 큰 경우에만 사용합니다. 샤드 추가 시 이 파라미터를 사용하지 않으면 Amazon ElastiCache에서는 새 노드에 대해 가용 영역을 선택합니다.

    다음 프로세스에서는 ElastiCache API를 사용해 샤드를 추가하여 Redis(클러스터 모드 활성화됨) 클러스터에서 샤드를 재구성하는 방법을 설명합니다.

    예 - 샤드 추가

    다음 예에서는 Redis(클러스터 모드 활성화됨) 클러스터 my-cluster에 노드 그룹을 추가해 작업을 완료하면 노드 그룹이 총 4개가 됩니다. 또한 이 예에서는 각 샤드 내 개별 노드에 대한 가용 영역을 지정합니다. 작업이 즉시 시작됩니다.

    https://elasticache.us-east-2.amazonaws.com/ ?Action=ModifyReplicationGroupShardConfiguration &ApplyImmediately=true &NodeGroupCount=4 &ReplicationGroupId=my-cluster &ReshardingConfiguration.ReshardingConfiguration.1.PreferredAvailabilityZones.AvailabilityZone.1=us-east-2a &ReshardingConfiguration.ReshardingConfiguration.1.PreferredAvailabilityZones.AvailabilityZone.2=us-east-2c &ReshardingConfiguration.ReshardingConfiguration.2.PreferredAvailabilityZones.AvailabilityZone.1=us-east-2b &ReshardingConfiguration.ReshardingConfiguration.2.PreferredAvailabilityZones.AvailabilityZone.2=us-east-2a &ReshardingConfiguration.ReshardingConfiguration.3.PreferredAvailabilityZones.AvailabilityZone.1=us-east-2c &ReshardingConfiguration.ReshardingConfiguration.3.PreferredAvailabilityZones.AvailabilityZone.2=us-east-2d &ReshardingConfiguration.ReshardingConfiguration.4.PreferredAvailabilityZones.AvailabilityZone.1=us-east-2d &ReshardingConfiguration.ReshardingConfiguration.4.PreferredAvailabilityZones.AvailabilityZone.2=us-east-2c &Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20171002T192317Z &X-Amz-Credential=<credential>

    자세한 내용은 ElastiCache API 참조의 ModifyReplicationGroupShardConfiguration을 참조하세요.

    온라인 리샤딩을 사용하여 샤드 제거

    AWS Management Console, AWS CLI 또는 ElastiCache API를 사용하여 Redis(클러스터 모드 활성화됨) 클러스터에서 샤드를 제거할 수 있습니다.

    샤드 제거(콘솔)

    다음 프로세스에서는 AWS Management Console을 사용해 샤드를 제거하여 Redis(클러스터 모드 활성화됨) 클러스터에서 샤드를 재구성하는 방법을 설명합니다.

    복제 그룹에서 노드 그룹(샤드)을 제거하기 전에 ElastiCache에서는 모든 데이터가 나머지 샤드에 맞는지 확인합니다. 데이터가 맞으면 요청된 대로 지정된 샤드가 복제 그룹에서 삭제됩니다. 데이터가 나머지 노드 그룹에 맞지 않으면 프로세스가 종료되고 복제 그룹은 요청이 작성되기 전과 동일한 노드 그룹 구성으로 남습니다.

    AWS Management Console을 사용하여 Redis(클러스터 모드 활성화됨) 클러스터에서 샤드를 하나 이상 제거할 수 있습니다. 복제 그룹에서 샤드를 모두 제거할 수는 없습니다. 대신 복제 그룹을 삭제해야 합니다. 자세한 내용은 복제 그룹 삭제 섹션을 참조하세요. 다음 절차는 샤드를 하나 이상 삭제하는 프로세스를 설명합니다.

    Redis(클러스터 모드 활성화됨) 클러스터에서 샤드를 제거하려면
    1. https://console.aws.amazon.com/elasticache/에서 ElastiCache 콘솔을 엽니다.

    2. 탐색 창에서 Redis 클러스터(Redis clusters)를 선택합니다.

    3. 샤드를 제거하고자 하는 Redis(클러스터 모드 활성화됨) 클러스터의 이름 왼쪽에 있는 상자가 아닌 클러스터의 이름을 찾아 선택합니다.

      작은 정보

      Redis(클러스터 모드 활성화됨) 클러스터의 샤드 열에는 1보다 크거나 같은 값이 있습니다.

    4. 샤드 목록에서 삭제하고자 하는 각 샤드의 이름 왼쪽에 있는 상자를 선택합니다.

    5. [Delete shard]를 선택합니다.

    샤드 제거(AWS CLI)

    다음 프로세스에서는 AWS CLI를 사용해 샤드를 제거하여 Redis(클러스터 모드 활성화됨) 클러스터에서 샤드를 재구성하는 방법을 설명합니다.

    중요

    복제 그룹에서 노드 그룹(샤드)을 제거하기 전에 ElastiCache에서는 모든 데이터가 나머지 샤드에 맞는지 확인합니다. 데이터가 맞으면 요청된 대로 지정된 샤드(--node-groups-to-remove)가 복제 그룹에서 삭제되고 해당 샤드의 키스페이스가 나머지 샤드로 매핑됩니다. 데이터가 나머지 노드 그룹에 맞지 않으면 프로세스가 종료되고 복제 그룹은 요청이 작성되기 전과 동일한 노드 그룹 구성으로 남습니다.

    AWS CLI를 사용하여 Redis(클러스터 모드 활성화됨) 클러스터에서 샤드를 하나 이상 제거할 수 있습니다. 복제 그룹에서 샤드를 모두 제거할 수는 없습니다. 대신 복제 그룹을 삭제해야 합니다. 자세한 내용은 복제 그룹 삭제 섹션을 참조하세요.

    modify-replication-group-shard-configuration에 다음 파라미터를 사용합니다.

    파라미터
    • --apply-immediately - 필수입니다. 즉시 시작할 샤드 재구성 작업을 지정합니다.

    • --replication-group-id - 필수입니다. 샤드 재구성 작업을 수행할 복제 그룹(클러스터)을 지정합니다.

    • --node-group-count - 필수입니다. 작업 완료 시 존재할 샤드(노드 그룹) 수를 지정합니다. 샤드를 제거하는 경우 --node-group-count의 값은 현재 샤드 수보다 작아야 합니다.

    • --node-groups-to-remove - --node-group-count가 노드 그룹(샤드)의 현재 수보다 작은 경우에만 필요합니다. 복제 그룹에서 제거할 샤드(노드 그룹) ID 목록입니다.

    다음 절차는 샤드를 하나 이상 삭제하는 프로세스를 설명합니다.

    예 - 샤드 제거

    다음 예에서는 Redis(클러스터 모드 활성화됨) 클러스터 my-cluster에서 노드 그룹 두 개를 제거해 작업을 완료하면 노드 그룹이 총 2개가 됩니다. 제거된 샤드의 키스페이스는 나머지 샤드 간에 균일하게 분배됩니다.

    Linux, macOS 또는 Unix의 경우는 다음과 같습니다.

    aws elasticache modify-replication-group-shard-configuration \ --replication-group-id my-cluster \ --node-group-count 2 \ --node-groups-to-remove "0002" "0003" \ --apply-immediately

    Windows의 경우:

    aws elasticache modify-replication-group-shard-configuration ^ --replication-group-id my-cluster ^ --node-group-count 2 ^ --node-groups-to-remove "0002" "0003" ^ --apply-immediately

    샤드 제거(ElastiCache API)

    ElastiCache API에서 ModifyReplicationGroupShardConfiguration 작업을 사용해 Redis(클러스터 모드 활성화됨) 클러스터 내 샤드를 온라인으로 재구성할 수 있습니다.

    다음 프로세스에서는 ElastiCache API를 사용해 샤드를 제거하여 Redis(클러스터 모드 활성화됨) 클러스터에서 샤드를 재구성하는 방법을 설명합니다.

    중요

    복제 그룹에서 노드 그룹(샤드)을 제거하기 전에 ElastiCache에서는 모든 데이터가 나머지 샤드에 맞는지 확인합니다. 데이터가 맞으면 요청된 대로 지정된 샤드(NodeGroupsToRemove)가 복제 그룹에서 삭제되고 해당 샤드의 키스페이스가 나머지 샤드로 매핑됩니다. 데이터가 나머지 노드 그룹에 맞지 않으면 프로세스가 종료되고 복제 그룹은 요청이 작성되기 전과 동일한 노드 그룹 구성으로 남습니다.

    ElastiCache API를 사용하여 Redis(클러스터 모드 활성화됨) 클러스터에서 샤드를 하나 이상 제거할 수 있습니다. 복제 그룹에서 샤드를 모두 제거할 수는 없습니다. 대신 복제 그룹을 삭제해야 합니다. 자세한 내용은 복제 그룹 삭제 섹션을 참조하세요.

    ModifyReplicationGroupShardConfiguration에 다음 파라미터를 사용합니다.

    파라미터
    • ApplyImmediately=true - 필수입니다. 즉시 시작할 샤드 재구성 작업을 지정합니다.

    • ReplicationGroupId - 필수입니다. 샤드 재구성 작업을 수행할 복제 그룹(클러스터)을 지정합니다.

    • NodeGroupCount - 필수입니다. 작업 완료 시 존재할 샤드(노드 그룹) 수를 지정합니다. 샤드를 제거하는 경우 NodeGroupCount의 값은 현재 샤드 수보다 작아야 합니다.

    • NodeGroupsToRemove - --node-group-count가 노드 그룹(샤드)의 현재 수보다 작은 경우에만 필요합니다. 복제 그룹에서 제거할 샤드(노드 그룹) ID 목록입니다.

    다음 절차는 샤드를 하나 이상 삭제하는 프로세스를 설명합니다.

    예 - 샤드 제거

    다음 예에서는 Redis(클러스터 모드 활성화됨) 클러스터 my-cluster에서 노드 그룹 두 개를 제거해 작업을 완료하면 노드 그룹이 총 2개가 됩니다. 제거된 샤드의 키스페이스는 나머지 샤드 간에 균일하게 분배됩니다.

    https://elasticache.us-east-2.amazonaws.com/ ?Action=ModifyReplicationGroupShardConfiguration &ApplyImmediately=true &NodeGroupCount=2 &ReplicationGroupId=my-cluster &NodeGroupsToRemove.member.1=0002 &NodeGroupsToRemove.member.2=0003 &Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20171002T192317Z &X-Amz-Credential=<credential>

    온라인 샤드 재분배

    AWS Management Console, AWS CLI 또는 ElastiCache API를 사용하여 Redis(클러스터 모드 활성화됨) 클러스터에서 샤드를 재분배할 수 있습니다.

    온라인 샤드 재분배(콘솔)

    다음 프로세스에서는 AWS Management Console을 사용해 샤드를 재분배하여 Redis(클러스터 모드 활성화됨) 클러스터에서 샤드를 재구성하는 방법을 설명합니다.

    Redis(클러스터 모드 활성화됨) 클러스터에서 샤드 간에 키스페이스를 재분배하려면
    1. https://console.aws.amazon.com/elasticache/에서 ElastiCache 콘솔을 엽니다.

    2. 탐색 창에서 Redis 클러스터(Redis clusters)를 선택합니다.

    3. 재분배하고자 하는 Redis(클러스터 모드 활성화됨) 클러스터의 이름 왼쪽에 있는 상자가 아닌 클러스터의 이름을 선택합니다.

      작은 정보

      Redis(클러스터 모드 활성화됨) 클러스터의 샤드 열에는 1보다 크거나 같은 값이 있습니다.

    4. [Rebalance]를 선택합니다.

    5. 메시지가 나타나면 Rebalance를 선택합니다. 다음과 유사한 메시지가 표시될 수 있습니다. Slots in the replication group are uniformly distributed. Nothing to do. (Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidReplicationGroupState; Request ID: 2246cebd-9721-11e7-8d5b-e1b0f086c8cf). 이러한 메시지가 표시되면 [Cancel]을 선택합니다.

    온라인 샤드 재분배(AWS CLI)

    modify-replication-group-shard-configuration에 다음 파라미터를 사용합니다.

    파라미터
    • -apply-immediately - 필수입니다. 즉시 시작할 샤드 재구성 작업을 지정합니다.

    • --replication-group-id - 필수입니다. 샤드 재구성 작업을 수행할 복제 그룹(클러스터)을 지정합니다.

    • --node-group-count - 필수입니다. 클러스터 내 모드 샤드 간에 키스페이스를 재분배하려면 이 값이 현재 샤드 수와 동일해야 합니다.

    다음 프로세스에서는 AWS CLI를 사용해 샤드를 재분배하여 Redis(클러스터 모드 활성화됨) 클러스터에서 샤드를 재구성하는 방법을 설명합니다.

    예 - 클러스터에서 샤드 재분배

    다음 예에서는 Redis(클러스터 모드 활성화됨) 클러스터 my-cluster에서 슬롯을 재분배하여 슬롯이 가급적 균일하게 분산되도록 합니다. --node-group-count(4)의 값은 클러스터 내 현재 샤드 수입니다.

    Linux, macOS 또는 Unix의 경우는 다음과 같습니다.

    aws elasticache modify-replication-group-shard-configuration \ --replication-group-id my-cluster \ --node-group-count 4 \ --apply-immediately

    Windows의 경우:

    aws elasticache modify-replication-group-shard-configuration ^ --replication-group-id my-cluster ^ --node-group-count 4 ^ --apply-immediately

    온라인 샤드 재분배(ElastiCache API)

    ElastiCache API에서 ModifyReplicationGroupShardConfiguration 작업을 사용해 Redis(클러스터 모드 활성화됨) 클러스터 내 샤드를 온라인으로 재구성할 수 있습니다.

    ModifyReplicationGroupShardConfiguration에 다음 파라미터를 사용합니다.

    파라미터
    • ApplyImmediately=true - 필수입니다. 즉시 시작할 샤드 재구성 작업을 지정합니다.

    • ReplicationGroupId - 필수입니다. 샤드 재구성 작업을 수행할 복제 그룹(클러스터)을 지정합니다.

    • NodeGroupCount - 필수입니다. 클러스터 내 모드 샤드 간에 키스페이스를 재분배하려면 이 값이 현재 샤드 수와 동일해야 합니다.

    다음 프로세스에서는 ElastiCache API를 사용해 샤드를 재분배하여 Redis(클러스터 모드 활성화됨) 클러스터에서 샤드를 재구성하는 방법을 설명합니다.

    예 - 클러스터 재분배

    다음 예에서는 Redis(클러스터 모드 활성화됨) 클러스터 my-cluster에서 슬롯을 재분배하여 슬롯이 가급적 균일하게 분산되도록 합니다. NodeGroupCount(4)의 값은 클러스터 내 현재 샤드 수입니다.

    https://elasticache.us-east-2.amazonaws.com/ ?Action=ModifyReplicationGroupShardConfiguration &ApplyImmediately=true &NodeGroupCount=4 &ReplicationGroupId=my-cluster &Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20171002T192317Z &X-Amz-Credential=<credential>