Le référentiel sera géré et ce sera très pratique. Cependant, quand je lis [Official Document] doc, je devrais charger le token dans la variable d'environnement ... Faites-vous des choses aussi ennuyeuses à chaque fois? ne veux pas!
J'ai donc écrit pour lire le profil qui aurait été défini dans l'AWS CLI.
Un profil AWS CLI qui peut accéder à n'importe quel CodeArtifact a été défini
Copiez le tout ci-dessous
build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.amazonaws:aws-java-sdk-codeartifact:1.11.801'
}
}
import com.amazonaws.services.codeartifact.AWSCodeArtifactClient;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.codeartifact.model.GetAuthorizationTokenRequest;
def setAuthorizationToken = {mavenArtifactRepository, profile ->
def domainLevels = mavenArtifactRepository.url.getHost().split('\\.')
def artifactDomain = domainLevels[0].substring(0,domainLevels[0].lastIndexOf("-"))
def artifactOwner = domainLevels[0].substring(domainLevels[0].lastIndexOf("-")+1)
def region = domainLevels[domainLevels.length -3]
def client = AWSCodeArtifactClient.builder()
.withCredentials(new ProfileCredentialsProvider(profile))
.withRegion(region)
.build();
def result = client.getAuthorizationToken(new GetAuthorizationTokenRequest()
.withDomain(artifactDomain)
.withDomainOwner(artifactOwner)
);
mavenArtifactRepository.credentials {
username "aws"
password result.authorizationToken
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
repositories {
maven {
url 'https://trial-558497472117.d.codeartifact.us-west-2.amazonaws.com/maven/trial/'
setAuthorizationToken(owner, "profileName")
}
}
dependencies {
implementation platform('com.amazonaws:aws-java-sdk-bom:1.11.801')
implementation 'com.amazonaws:aws-java-sdk-codeartifact'
}
Si vous remplacez le `` ici '' suivant par le nom du profil, c'est OK
setAuthorizationToken(owner, "ici")//← Nom du profil
S'il s'agit de s3, il n'est pas nécessaire de le récupérer avec buildscript depuis (
lib \ plugins \ aws-java-sdk-s3-1.11.xxx.jar '') dans le wrapper de gradle.
Comme le buildscript aws-java-sdk-codeartifact ne peut pas être fermé au début, il ne peut pas être rendu autonome avec uniquement CodeArtifact complet. Je peux le faire après la mise en cache localement, mais ...
Il n'y avait pas encore de chose du genre AWSCodeArtifactReadOnlyAccess '' dans la politique de gestion AWS. (Pouvez-vous le faire à l'avenir? Notez que CodeArtifact ne suffit pas et que `` `` sts: GetServiceBearerToken
est également requis!
Recommended Posts