Как разрешить "протокол не должен быть нулевым" для CopySnapshotRequest по регионам

Я пытаюсь переместить снимок EC2 из одного региона в другой.

При создании базовой копии снимка Ec2 и копировании ее во второй регион я получаю протокол ошибки не должен быть нулевым. Похоже, что хост также является нулевым, когда вы попадаете в ту точку кода, которая потребует хост. Насколько я понимаю, мне не нужно предоставлять протокол (http/https) или информацию о хосте при копировании снимка, который НЕ зашифрован. Похоже, что код AWS должен делать это негласно.

Вдобавок ко всему, это похоже на проблему aws, но о AWS SDK для Java V2 пока не так много отзывов, как я проверил здесь, а также github.

Исключение программы: java.lang.NullPointerException: протокол не должен быть нулевым

Я попытался добавить destinationRegion для строителя, но это также приводит к той же ошибке.

Среда выполнения - Amazon Java 11.0.3. Я пробовал использовать software.amazon.awssdk версии 2.7.11 до версии 2.7.29.

Основной фрагмент кода

    String amazonAccessKeyId = "amazonAccessKeyId";
    String amazonSecretKeyId = "amazonSecretKeyId";
    String baseRegionName = "baseRegionName"; // Region.AP_NORTHEAST_1.id(); or where ever your snapshot is located
    String remoteRegionName = "remoteRegionName "; // Region.AP_NORTHEAST_1.id(); or where ever your snapshot is located
    String snapshotId = "snapshotId"; // You will need a snapshot to work with this code

    // Setup AWS remote client with credentials
    AwsCredentials credentials = AwsBasicCredentials.create(amazonAccessKeyId, amazonSecretKeyId);

    Ec2Client amazonEc2RemoteRegionClient = Ec2Client.builder()
                    .region(Region.of(remoteRegionName))
                    .credentialsProvider(StaticCredentialsProvider.create(credentials))
                    .build();

    // Setup request
    CopySnapshotRequest request = CopySnapshotRequest.builder()
                    .sourceRegion(Region.of(baseRegionName).id())
                    .sourceSnapshotId(snapshotId)
                    .description("Foo Bar Testing...")
                    .build();

    // Invoke copy from remote region to pull in snapshot from source/default region
    // This is the line in question
    CopySnapshotResponse result = amazonEc2RemoteRegionClient.copySnapshot(request);

След стека следует

java.lang.NullPointerException: protocol must not be null.
        at software.amazon.awssdk.utils.Validate.paramNotNull(Validate.java:117)
        at software.amazon.awssdk.http.DefaultSdkHttpFullRequest.standardizeProtocol(DefaultSdkHttpFullRequest.java:63)
        at software.amazon.awssdk.http.DefaultSdkHttpFullRequest.<init>(DefaultSdkHttpFullRequest.java:52)
        at software.amazon.awssdk.http.DefaultSdkHttpFullRequest.<init>(DefaultSdkHttpFullRequest.java:41)
        at software.amazon.awssdk.http.DefaultSdkHttpFullRequest$Builder.build(DefaultSdkHttpFullRequest.java:331)
        at software.amazon.awssdk.http.DefaultSdkHttpFullRequest$Builder.build(DefaultSdkHttpFullRequest.java:170)
        at software.amazon.awssdk.services.ec2.transform.internal.GeneratePreSignUrlInterceptor.modifyHttpRequest(GeneratePreSignUrlInterceptor.java:102)
        at software.amazon.awssdk.core.interceptor.ExecutionInterceptorChain.modifyHttpRequestAndHttpContent(ExecutionInterceptorChain.java:99)
        at software.amazon.awssdk.core.client.handler.BaseClientHandler.runModifyHttpRequestAndHttpContentInterceptors(BaseClientHandler.java:123)
        at software.amazon.awssdk.core.client.handler.BaseClientHandler.finalizeSdkHttpFullRequest(BaseClientHandler.java:68)
        at software.amazon.awssdk.core.client.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:106)
        at software.amazon.awssdk.core.client.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:73)
        at software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:44)
        at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:55)
        at software.amazon.awssdk.services.ec2.DefaultEc2Client.copySnapshot(DefaultEc2Client.java:2808)

Я ожидаю, что моментальный снимок будет скопирован в указанный регион без ошибок и не зашифрован.

В качестве примечания я отправил это в Amazon через свою систему поддержки и жду от них ответа. Я обновлю этот пост, как только они ответят на мой запрос.

0 ответов

Ошибка copySnapshot sdk, строитель с presignedUrl может пропустить ее

Другие вопросы по тегам