小编Arc*_*nes的帖子

当 REGIONAL 处于活动状态时,无法为 EDGE 导入证书

我正在尝试将eu-central-1颁发的证书用于我的 apigateway,它是区域性的并且在同一区域工作。

我的地形代码如下:

//ACM Certificate

provider "aws" {
  region = "eu-central-1"
  alias = "eu-central-1"
}

resource "aws_acm_certificate" "certificate" {
  provider = "aws.eu-central-1"
  domain_name       = "*.kumite.xyz"
  validation_method = "EMAIL"
}

//Apigateway

resource "aws_api_gateway_rest_api" "kumite_writer_api" {
  name = "kumite_writer_api"
  endpoint_configuration {
    types = ["REGIONAL"]
  }
}

resource "aws_api_gateway_domain_name" "domain_name" {
  certificate_arn = aws_acm_certificate.certificate.arn
  domain_name     = "recorder.kumite.xyz"
  endpoint_configuration {
    types = ["REGIONAL"]
  }
}

Run Code Online (Sandbox Code Playgroud)

不幸的是,我不断收到此错误:

错误:创建 API 网关域名时出错:BadRequestException:无法在 REGIONAL 处于活动状态时为 EDGE 导入证书。

我在这里缺少什么?我认为我的 ApiGateway 不是 EDGE 而是 REGIONAL,所以找不到错误的意义......

terraform aws-api-gateway terraform-provider-aws

17
推荐指数
1
解决办法
3163
查看次数

AWS sts 在一个命令中扮演角色

要在 CLI 中担任 AWS 角色,我执行以下命令:

aws sts assume-role --role-arn arn:aws:iam::123456789123:role/myAwesomeRole --role-session-name test --region eu-central-1
Run Code Online (Sandbox Code Playgroud)

这给了我一个遵循架构的输出:

{
    "Credentials": {
        "AccessKeyId": "someAccessKeyId",
        "SecretAccessKey": "someSecretAccessKey",
        "SessionToken": "someSessionToken",
        "Expiration": "2020-08-04T06:52:13+00:00"
    },
    "AssumedRoleUser": {
        "AssumedRoleId": "idOfTheAssummedRole",
        "Arn": "theARNOfTheRoleIWantToAssume"
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我手动复制和粘贴 , 的值AccessKeyIdSecretAccessKeySessionToken在像这样的一堆导出中:

export AWS_ACCESS_KEY_ID="someAccessKeyId"                                                                                      
export AWS_SECRET_ACCESS_KEY="someSecretAccessKey"
export AWS_SESSION_TOKEN="someSessionToken"
Run Code Online (Sandbox Code Playgroud)

最终承担起这个角色。

我怎么能一次性做到这一点?我的意思是,无需手动干预将aws sts ...命令的输出复制和粘贴到exports.

amazon-web-services aws-cli aws-sts

15
推荐指数
4
解决办法
7304
查看次数

与 Java 的 AWS DocumentDB TLS 连接

我在通过 TLS/SSL 使用纯 Java 连接我的 DocumentDB 集群时遇到问题

我按照AWS 文档遵循的程序是这样的:

.pem从 AWS下载了文件并复制到我的 java 项目的根目录中,从那里我执行:

keytool -importcert -trustcacerts -file rds-combined-ca-bundle.pem -alias certAlias -keystore rds-ca-certs -storepass keyStorePassword
Run Code Online (Sandbox Code Playgroud)

这已经在rds-ca-certs我的项目的根目录创建了,现在看起来像这样:

在此处输入图片说明

并且,Main.java 中的 java 代码是:

package com.example.documentdb;

import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.ServerAddress;
import com.mongodb.MongoException;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;


public final class Main {
    private Main() {
    }
    public static void main(String[] args) {

        String template = "mongodb://%s:%s@%s/test?ssl=true&replicaSet=rs0&readpreference=%s";
        String username = "myUsernameInCluster";
        String password = "myPasswordInCluster"; …
Run Code Online (Sandbox Code Playgroud)

aws-documentdb

12
推荐指数
1
解决办法
3242
查看次数

使用 AWS SDK for Java 2.x 检查 S3 对象的元数据

我没能找到一种方法来检查S3对象的元数据字段,如Content-TypeCache-ControlAWS SDK的Java 2.X

使用适用于 Java 1.x 的 AWS 开发工具包,事情就这么简单:

s3Client.getObjectMetadata("myBucket", "myfile.doc");

但是我看不到最新版本的 API 的类似方法。

amazon-s3 amazon-web-services aws-sdk

6
推荐指数
1
解决办法
2026
查看次数

如何以编程方式获取 Terraform 模块名称?

我定义了以下 Terraform 模块:

module "lambda" {
  source                = "../lambda"
  region                =  "us-west-1"
  account               = "${var.account}"
}
Run Code Online (Sandbox Code Playgroud)

如何利用模块名称来设置source带插值的参数?我希望是这样的:

module "lambda" {
  source                = "../${this.name}"
  region                =  "us-west-1"
  account               = "${var.account}"
}
Run Code Online (Sandbox Code Playgroud)

terraform hcl

5
推荐指数
2
解决办法
4368
查看次数

Terraform Lambda source_code_hash使用相同的代码更新

我已经使用Terraform成功部署了一个AWS Lambda:

resource "aws_lambda_function" "lambda" {
  filename                       = "dist/subscriber-lambda.zip"
  function_name                  = "test_get-code"
  role                           = <my_role>
  handler                        = "main.handler"
  timeout                        = 14
  reserved_concurrent_executions = 50
  memory_size                    = 128
  runtime                        = "python3.6"
  tags                           = <my map of tags>
  source_code_hash               = "${base64sha256(file("../modules/lambda/lambda-code/main.py"))}"
  kms_key_arn                    = <my_kms_arn>
  vpc_config {
    subnet_ids         = <my_list_of_private_subnets>
    security_group_ids = <my_list_of_security_groups>
  }
  environment {
    variables = {
      environment = "dev"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我运行terraform plan命令时,它说我的lambda资源需要更新,因为source_code_hash已经更改了,但是我没有更新lambda Python代码库(在相同仓库的文件夹中版本化):

  ~ module.app.module.lambda.aws_lambda_function.lambda
  last_modified:                     "2018-10-05T07:10:35.323+0000" => <computed>
  source_code_hash:                  "jd6U44lfe4124vR0VtyGiz45HFzDHCH7+yTBjvr400s=" => "JJIv/AQoPvpGIg01Ze/YRsteErqR0S6JsqKDNShz1w78"
Run Code Online (Sandbox Code Playgroud)

我想这是因为它每次都会压缩我的Python源,并且源会更改。如果Python代码没有变化,如何避免这种情况?如果我不更改Python代码库,我的假设是否连贯(我的意思是,为什么哈希会发生变化)?

aws-lambda terraform

5
推荐指数
3
解决办法
3520
查看次数

启动客户端时,代码要求电话/机器人令牌

在使用 Telethon 库运行我的第一个代码时,它要求一个机器人令牌。

这是实际的代码:

from telethon import TelegramClient, events, sync
api_id = 1234567
api_hash = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
client = TelegramClient('anon', api_id, api_hash)
client.start()
Run Code Online (Sandbox Code Playgroud)

在命令提示符下:

pip3 install telethon

python3 C:/TG/First.py
Run Code Online (Sandbox Code Playgroud)

结果:

请输入您的电话(或机器人令牌)

如果我提供我的 API ID,它最终会抛出错误:

telethon.errors.rpcerrorlist.PhoneNumberInvalidError: 电话号码无效(由 SendCodeRequest 引起)

为什么?我希望客户端启动时不会出错。

PS:我的 API ID 是 7 位数字。

python telegram telethon

5
推荐指数
1
解决办法
3225
查看次数

AWS 提供商中的 Terraform 配置文件字段使用情况

我有一个$HOME/.aws/credentials这样的文件:

[config1]
aws_access_key_id=accessKeyId1
aws_secret_access_key=secretAccesskey1

[config2]
aws_access_key_id=accessKeyId2
aws_secret_access_key=secretAccesskey2
Run Code Online (Sandbox Code Playgroud)

所以我期望通过此配置,terraform将选择第二个凭据:

terraform {
  backend "s3" {
    bucket  = "myBucket"
    region  = "eu-central-1"
    key     = "path/to/terraform.tfstate"
    encrypt = true
  }
}

provider "aws" {
  profile = "config2"
  region  = "eu-central-1"
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试时terraform init它说它没有找到任何有效的凭据:

正在初始化后端...

错误:找不到 AWS 提供商的有效凭证源。有关为 AWS 提供商提供凭证的更多信息,请参阅https://terraform.io/docs/providers/aws/index.html

作为解决方法,我在凭据文件中进行了更改config2defaultprofile从块中删除了该字段provider,因此它可以工作,但我确实需要使用类似于第一种方法的方法。我在这里缺少什么?

terraform terraform-provider-aws

4
推荐指数
1
解决办法
7405
查看次数

从 KMS 加密 SNS 中的 lambda 函数发布

我正在尝试从 Python 3.8 Lambda 函数发布到 KMS 加密的 SNS 主题。我的 lambda 代码是:

import os
import boto3

sns = boto3.client('sns')


def handler(event, context):
    message = 'Hello world'

    response = sns.publish(
        TopicArn='<My topic ARN>',
        Message=message,
    )
Run Code Online (Sandbox Code Playgroud)

如果 SNS 未加密,则代码可以完美运行......

...但是当我通过以下选项加密 SNS 主题时:

在此输入图像描述

执行 lambda 时出现以下错误:

{“errorMessage”:“调用发布操作时发生错误 (KMSNotFound):keyId aws/sns 无效(服务:AWSKMS;状态代码:400;错误代码:NotFoundException;请求 ID:d81234100-9cb4-4af2-0032-c4a568a955f4 )", "errorType": "KMSNotFoundException", "stackTrace": [ " 文件 \"/var/task/lambda.py\",第 10 行,处理程序\n boto3.client('sns').publish(\ n", " 文件 \"/var/runtime/botocore/client.py\", 第 316 行,在 _api_call\n 返回 self._make_api_call(operation_name, kwargs)\n", " 文件 \"/var/runtime/botocore /client.py\",第 626 行,在 _make_api_call\n 中引发 error_class(parsed_response, operation_name)\n" ] …

amazon-web-services amazon-sns boto3 aws-lambda

4
推荐指数
1
解决办法
5562
查看次数

为什么LocalDate.plusDays在这里不起作用?

我正在尝试通过以下方式将日期范围划分为各个日期:

private static void splitDates(LocalDate dateFrom, LocalDate dateTo) {
    while (dateFrom.isBefore(dateTo) || dateFrom.isEqual(dateTo)) {
        System.out.println(dateFrom);
        dateFrom.plusDays(1L);
    }
}
Run Code Online (Sandbox Code Playgroud)

而且我不知道为什么dateFrom.plusDays(1L)不起作用,因为日期保持不变,所以循环变为无限。

java localdate

2
推荐指数
2
解决办法
853
查看次数