我有一个非常简单的 cdk 项目:
import * as cdk from '@aws-cdk/core';
import { TestStack } from '../lib/test-stack';
const app = new cdk.App();
new TestStack(app, 'TestStack');
Run Code Online (Sandbox Code Playgroud)
我可以使用 cdk deploy 轻松部署堆栈,并且堆栈的名称在 AWS 上为“TestStack”。到目前为止,一切都很好。但是我想控制cloudformation中堆栈的名称。有什么方法可以 fdo cdk 部署并更改 AWS 中堆栈的默认名称吗?
像 cdk deploy --stack-name SomeName 这样的东西?((堆栈名称是一个组成的命令))
我想知道这一点,因为我希望能够构建一个部署系统,该系统可以从单个 cdk 项目构建多个堆栈。根据输入参数,每个堆栈都会略有不同。就像是
cdk deploy --stackName Stack1 --parameters parameters1
cdk deploy --stackName Stack2 --parameters parameters2
cdk deploy --stackName Stack3 --parameters parameters3
Run Code Online (Sandbox Code Playgroud)
我最终将在 AWS 中同时拥有 Stack1、Stack2 和 Stack3。
我已经使用 CDK 几个月了,我面临着一个可能有一个简单解决方案的问题。我在网上搜索了很长一段时间,没有找到解决方案。我正在创建一个 lambda 函数:
const EventSplitter = new lambda.Function(this, 'EventSplitter', {
runtime: lambda.Runtime.PYTHON_3_8,
code: lambda.Code.fromAsset('lambda'),
handler: 'okta_event_splitter.lambda_handler'
});
Run Code Online (Sandbox Code Playgroud)
我想要获取这个 lambda 的 ARN,我尝试了以下不同的变体:
EventSplitter.attrArn, EventSplitter.Arn, EventSplitter.LambdaArn
Run Code Online (Sandbox Code Playgroud)
但它总是抱怨类型“Function”上不存在属性“attrArn”
我需要将所有文件从 S3 中的一个前缀复制到同一存储桶中的另一个前缀。我的解决方案是这样的:
file_list = [List of files in first prefix]
for file in file_list:
copy_source = {'Bucket': my_bucket, 'Key': file}
s3_client.copy(copy_source, my_bucket, new_prefix)
Run Code Online (Sandbox Code Playgroud)
不过,我只移动 200 个小文件(每个 1 kb),此过程最多需要 30 秒。一定可以做得更快吗?
我在CDK中遇到这个问题。我有一个由 SNS 主题触发的 lambda(从 S3 存储桶接收事件),但现在它在传递到 SNS 主题的每条消息上执行。我希望 Lambda 仅对特定存储桶名称、文件结尾和 PutObject 操作执行。
我知道如何将 SNS 连接到我的 lambda,只是不使用过滤器:
const myTopic = new sns.Topic(this, "Topic", {});
myTopic.addToResourcePolicy(new iam.PolicyStatement({
effect: iam.Effect.ALLOW,
actions: ["sns:Publish"],
resources: [myTopic.topicArn],
principals: [new iam.AccountPrincipal('XXXXXXXXX')]
}))
const snsEventSource = new lambdaEventSources.SnsEventSource(myTopic);
myLambda.addEventSource(snsEventSource)
Run Code Online (Sandbox Code Playgroud)
我不知道如何添加过滤器,我尝试过使用 sns.SubscriptionFilter 但没有任何运气
我正在从事时间序列分析,并且有 2021 年每个月 700 个单独区域的销售数据(我们将其称为 df_panel,因为我们的面板数据结构)。例如
区域 | 月 | 销售量 |
---|---|---|
1区 | 一月 | 1000 |
1区 | 二月 | 2000年 |
1区 | 集市 | 3000 |
2区 | 一月 | 1000 |
2区 | 二月 | 2000年 |
2区 | 集市 | 1400 |
3区 | 一月 | 1000 |
3区 | 二月 | 1200 |
3区 | 集市 | 1400 |
通常,在处理销售数据时,您可以使用 ADF 测试等方法来检查销售数据中的单位根。我知道如何在 Python 中对标准非面板数据结构执行此操作,例如使用数据帧 df 上 statsmodels 的 adfuller 函数:
adf_test_result = adfuller(df["Sales"])[1]
Run Code Online (Sandbox Code Playgroud)
我怎样才能对我的面板数据结构做类似的事情,因为它由 700 条单独的销售曲线(每个区域一条)组成。目标是使用面板数据回归(固定或随机效应)
一种近似方法是将我的面板数据销售曲线总结为一条销售曲线,并对其进行 ADF 测试:
adf_test_result = adfuller(df_panel.groupby("Month").sum()["Sales"])
Run Code Online (Sandbox Code Playgroud)
但我认为这会大大高估销售数据中单位根的概率。当对 700 个单独区域进行这样的汇总时,销售数据中的大量信息会丢失。
另一种近似可能是检查每个单独区域的单位根并以某种方式取平均值(?)
不太确定这里最好的是什么......
在 R 中,有一个函数包plm
实现purtest
了几个测试程序,这些测试程序已被提议用面板数据测试单位根假设,例如 Levin、Lin 和 Chu (2002) 的“levinlin”,Im、Pesaran 和 Shin 的“ips”( 2003),“madwu”代表 …
我想知道是否可以做这样的事情:
如果我将包括打字稿文件的完整 CDK 项目上传到 S3 存储桶,我可以设法完成这三个步骤。所以我的问题是是否有解决方法,这样您只需要 cdk.out 文件夹,而不需要 typescript 脚本本身。我的意思是该项目已经综合了?
当我尝试从 cdk.out 文件夹执行此操作时,它抱怨需要 cdk.json 文件。如果我使用 cdk.out 文件夹上传该文件,则会抱怨找不到打字稿文件。我认为这是因为我在 cdk.json 中有一个“app”:“npx ts-node bin/app.ts”。我不确定如何解决这个问题,以及是否可能。
如果不可能,我只需上传完整的项目,而不仅仅是 cdk.out 文件夹...
我有这个问题。我想创建一个只能使用 API 密钥访问的 API 网关 - 这部分已经完成。现在我想将 API 密钥的值存储在机密管理器中。我能够在机密管理器中存储硬编码值,但不能存储 API 密钥的实际值。创建 api 密钥的代码是:
const key = api.addApiKey('ApiKey');
Run Code Online (Sandbox Code Playgroud)
我可以通过以下方式在秘密管理器中存储硬编码值:
const secret = new secretsmanager.Secret(this, 'Secret', {
description: "Secret ",
secretName: "secret",
generateSecretString: {
secretStringTemplate: JSON.stringify({"api_key" : "some_value"}),
generateStringKey: "string_key",
}
});
Run Code Online (Sandbox Code Playgroud)
如何存储 api 密钥而不是硬编码值?