2017-05-12 4 views

답변

1

AWS SDK에 제공된 모든 자격증 명 공급자는 기본 자격증 명 체인과 자격 증명 체인을 위임 할 때 포함하여 스레드로부터 안전합니다.

자격 증명 공급자 (예 : 자격 증명 공급자 체인 setReuseLastProvider)의 변이 방법을 사용하면 항상 휘발성 변수에 영향을 미치지 않으므로 여러 스레드에서 사용하기 전에 자격 증명 공급자를 완전히 구성하는 것이 좋습니다.

+0

오른쪽, 오른쪽. @millems 감사합니다. "완전 구성"이란 무엇을 의미하는지 명확하게 설명해 주시겠습니까? Kevin Mullin은이 줄 앞에'getCredentials()'가 다시 호출되면 다음과 같이 지적합니다. https://github.com/aws/aws-sdk-java/blob/master/aws-java-sdk-core/src /main/java/com/amazonaws/auth/AWSCredentialsProviderChain.java#L121이면 코드가 전체 체인을 다시 반복 할 수 있습니다. – yegeniy

+1

사용을 시작하기 전에 제공자의'set *'메소드를 호출하는 것이 가장 좋습니다. 'lastUsedProvider'는 필드가 휘발성이 아니기 때문에 상당히 예측할 수 없으므로 스레드는 로컬에서 스레드의 값을 캐시 할 수 있으며 주변에는 잠금이 없습니다. 'lastUsedProvider'는 best-effort 필드이므로 전체 체인을 여러 번 반복 할 수 있습니다. 이것을 방지하는 것은 상대적으로 비효율적이며 체인을 여러 번 통과하는 데 따르는 비용은 과도하지 않습니다. – millems

0

소수의 인스턴스를 만드는 경우 별도의 인스턴스를 만드는 것이 가장 좋습니다. 문제가되는 오버 헤드에 대해 충분히 많은 수의 인스턴스를 생성하고 있다면 getCredentials()에 대한 호출은 틀림없이 스레드로부터 안전하지만, 사용할 공급자의 캐싱은 "덜 효율적"일 수 있습니다. 살펴보기 https://github.com/aws/aws-sdk-java/blob/master/aws-java-sdk-core/src/main/java/com/amazonaws/auth/AWSCredentialsProviderChain.java#L121