小编Yu *_*hen的帖子

节点process.env.VARIABLE_NAME返回undefined

我在我的mac上使用环境变量来存储一些敏感的凭据,并尝试通过Node访问它们.我将它们添加到我的环境配置文件中

export VARIABLE_NAME=mySensitiveInfo

当我使用时,echo $VARIABLE_NAME我收到正确的输出(我的敏感信息).

但是,当我尝试在Node中访问这个相同的变量process.env.VARIABLE_NAME并尝试在控制台上打印出来时,我得到一个未定义的.

其他环境变量似乎没问题.例如,当我console.log(process.env.FACEBOOK_CALLBACK_URL),它将正确的值打印到我的控制台.我几天前添加了FACEBOOK_CALLBACK_URL.

我是否必须重新启动机器?环境变量在Node中可用之前是否需要一段时间?我在SO上看到的最接近的答案是这篇文章,但没有人能够弄清楚它为什么会发生.

environment-variables node.js

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

Spring Boot无法识别application.properties文件

我正在尝试使用Spring Boot配置DynamoDb客户端,并将我的端点和配置信息放在我的resources/application.properties文件中.但是,Spring Boot似乎没有获得这些属性.它确实选择了我存储在同一文件中的"server.default"密钥,因此它肯定会识别文件本身.

这是我的application.properties文件和我正在尝试将属性加载到(DynamoDBClientMapper)的类:

amazon.dynamodb.endpoint=http://localhost:8000/
amazon.dynamodb.region=us-west-1
amazon.aws.accesskey=key
amazon.aws.secretkey=key2

server.port=8080
Run Code Online (Sandbox Code Playgroud)

这是我的项目结构: 在此输入图像描述

这是我正在尝试加载属性的相关类.我尝试了@PropertySource注释和新的属性文件,以及EnableAutoConfiguration,但都没有注册属性文件.

@PropertySource("database.properties")
public class DynamoClientMapper {

    @Value("${amazon.dynamodb.endpoint}")
    private String amazonDynamoDBEndpoint;

    @Value("${amazon.aws.accesskey}")
    private String amazonAWSAccessKey;

    @Value("${amazon.aws.secretkey}")
    private String amazonAWSSecretKey;

    @Value("${amazon.aws.region}")
    private String amazonAWSRegion;
Run Code Online (Sandbox Code Playgroud)

这是我的App.java:

@SpringBootApplication
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class App {

//    private static final Logger logger = Logger.getLogger(App.class.toString());

    public static void main(String[] args){
        SpringApplication.run(App.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是堆栈跟踪:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dynamoClientMapper' defined in file [C:\Users\ychen4\Desktop\DiningApplication\target\classes\main\java\com\dining\dao\DynamoClientMapper.class]: Instantiation of bean failed; …
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot

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

Terraform S3 Bucket 对象的 etag 在每次应用时不断更新

我正在将 AWS Lambda 代码作为 zip 文件上传到 S3 存储桶中。

我有一个为 S3 存储桶对象声明的资源:

resource "aws_s3_bucket_object" "source-code-object" {
  bucket = "${aws_s3_bucket.my-bucket.id}"
  key = "source-code.zip"
  source = "lambda_source_code/source-code.zip"
  etag = "${base64sha256(file("lambda_source_code/source-code.zip"))}"
}
Run Code Online (Sandbox Code Playgroud)

我还有一个数据声明来压缩我的代码:

data "archive_file" "source-code-zip" {
  type = "zip"
  source_file = "${path.module}/lambda_source_code/run.py"
  output_path = "${path.module}/lambda_source_code/source-code.zip"
}
Run Code Online (Sandbox Code Playgroud)

输出terraform apply不断向我显示哈希值的更改:

  ~ aws_s3_bucket_object.source-code-object
      etag: "old_hash" => "new_hash"
Run Code Online (Sandbox Code Playgroud)

即使我的源代码中没有任何更改。为什么会出现这种行为?我见过类似的帖子,其中 Lambda 的源代码不断变化,但我的 Lambda 实际上并没有每次都更新(在控制台中检查了上次更新时间)。但是,看起来确实在每个apply.

amazon-s3 amazon-web-services terraform

16
推荐指数
3
解决办法
6991
查看次数

在Tensorflow中创建许多功能列

我正在开始使用Tensorflow项目,我正在定义和创建我的功能列.但是,我有数百个功能 - 这是一个非常广泛的数据集.即使在预处理和擦洗之后,我也有很多专栏.

传统的创建方法feature_columnTensorflow教程甚至StackOverflow文章中定义.您基本上为每个功能列声明并初始化Tensorflow对象:

gender = tf.feature_column.categorical_column_with_vocabulary_list(
    "gender", ["Female", "Male"])
Run Code Online (Sandbox Code Playgroud)

如果您的数据集只有几列,这一切都很好,但在我的情况下,我肯定不希望有数百行代码初始化不同的feature_column对象.

解决此问题的最佳方法是什么?我注意到在本教程中,所有列都作为列表收集:

base_columns = [
    gender, native_country, education, occupation, workclass, relationship,
    age_buckets,
]
Run Code Online (Sandbox Code Playgroud)

哪个最终会传递到您的估算工具中:

m = tf.estimator.LinearClassifier(
    model_dir=model_dir, feature_columns=base_columns)
Run Code Online (Sandbox Code Playgroud)

因此,处理feature_column数百列创建的理想方法是将它们直接附加到列表中吗?像这样的东西?

my_columns = []

for col in df.columns:
    if is_string_dtype(df[col]): #is_string_dtype is pandas function
        my_column.append(tf.feature_column.categorical_column_with_hash_bucket(col, 
            hash_bucket_size= len(df[col].unique())))

    elif is_numeric_dtype(df[col]): #is_numeric_dtype is pandas function
        my_column.append(tf.feature_column.numeric_column(col))
Run Code Online (Sandbox Code Playgroud)

这是创建这些功能列的最佳方法吗?或者我错过了Tensorflow的一些功能,让我可以解决这个问题?

python neural-network tensorflow

13
推荐指数
1
解决办法
3532
查看次数

运行 ECS 任务的 boto3 lambda 调用需要在修订号中进行硬编码?

长话短说,我不想将任务的 ECS 任务定义修订号硬编码到我的 lambda 源代码中。每次我有更新的任务定义时,基本上都在费力地更新我的源代码。在ECS 的 boto3 文档中run_task(),它明确指出

taskDefinition (string) -- [必需]

要运行的任务定义的系列和修订 (family:revision ) 或完整 ARN。如果未指定修订版,则使用最新的 ACTIVE 修订版

但是,我发现如果我taskDefinitionclient.run_task()没有特定修订号的情况下定义参数,则会出现权限错误:

调用 RunTask 操作时发生错误 (AccessDeniedException):用户:arn:aws:sts::MY_ACCOUNT_ID:assumed-role/my-lambda-role/trigger-ecs-task is notauthorized to perform: ecs:RunTask on resource: arn:aws:ecs:MY_REGION:MY_ACCOUNT_ID:task-definition/an-important-task

如果我将定义切换为an-important-task:LATESTor an-important-task:*,则会出现另一个错误:

...无权执行:ecs:RunTask on resource: *

这很奇怪,因为它看起来与文档说明的相反 - 当我包含一个修订号时,比如an-important-task:5,lambda 会完美地触发。在我的 lambda 函数中,我只是调用了我的 ECS 任务:

def lambda_handler(event, context):
    client = boto3.client('ecs')
    print("Running task.")
    response = client.run_task(
        cluster='my-cluster', 
        launchType='FARGATE',
        taskDefinition='an-important-task',  # <-- notice no revision number …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-ecs aws-lambda terraform

11
推荐指数
1
解决办法
5633
查看次数

Jenkins 在发出拉取请求后禁用分支上的项目构建

注意:我只在我的一个分支中设置了 Jenkinsfile,而不是 master。

我已经设置了 Git webhooks 来监控到我的 Github 存储库的推送事件。但是,我注意到我的 Jenkins 构建作为分支运行良好(接收推送事件,触发构建),但是在发出拉取请求后,我的分支构建在Branches我的项目选项卡中被禁用。

在此处输入图片说明

但是,我确实在我的Pull Requests选项卡中看到了新的 PR 。但是现在,当我推送到 Github 时,新的提交不再触发构建。在我的分支选项卡中,我的旧分支现在被划掉了。 在此处输入图片说明

我如何强迫詹金斯继续建立我的分支?我想继续从分支构建,即使已经发布了 PR。

git github jenkins

7
推荐指数
1
解决办法
3114
查看次数

浏览器从Webpack加载旧的bundle.js

我是一名React新手,试图学习如何将Flask应用程序与React集成。我发现,每当我对React .js文件进行更改时,所做的更改都会重新编译bundle.js到我的浏览器中,而不会出现在浏览器中。

要复制,请从此Github存储库克隆源代码。按照说明进行设置,并确保运行webpack --watchpython app.py从虚拟环境。它应该启动一个简单的Web服务器,该服务器可以从访问localhost:5000

在Chrome浏览器上访问时,应该显示以下屏幕: 在此处输入图片说明

接下来,进入Hello.js文件并进行一些随机编辑-例如,更改Hello World!Hello everyone!。从我学到的知识来看,webpack --watch应该注意监听更改并重新编译,这确实可以做到:如果您进入,bundle.js您将看到更改已重新编译:

var Hello = _react2.default.createClass({
  displayName: 'Hello',
  render: function render() {
    return _react2.default.createElement(
      'h1',
      null,
      'Hello, everyone!'
    );
  }
});
Run Code Online (Sandbox Code Playgroud)

但是,刷新浏览器时,将获得与以前相同的消息(Hello World)。当我检查bundle.jsChrome使用的源代码时,发现使用我的旧代码仍为STILL:在此处输入图片说明

我的理论是Chrome使用某种缓存?但是我已经玩了大约一个小时,无法bundle.js更新。

是什么导致浏览器加载bundle.js文件?

编辑:我已重新加载,现在更改已应用于我的浏览器屏幕。但是,刷新和更新似乎耗时特别长,至少需要4-5分钟。有什么办法可以缩短这个时间范围?

javascript python flask reactjs

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

AWS - EC2用户数据脚本如何分配弹性IP?

我正在尝试为 VPC 创建自己的堡垒主机,并创建一个最小/最大实例数为 1 的自动缩放组。在我的启动配置中,我为 ec2 用户数据指定以下内容:

#!

INSTANCE_ID=`/usr/bin/curl -s http://169.254.169.254/latest/meta-data/instance-id`

aws ec2 associate-address --instance-id $INSTANCE_ID --allocation-id eipalloc-my-eip-id --allow-reassociation
Run Code Online (Sandbox Code Playgroud)

此用户数据的目标是立即将弹性 IP 地址与我新创建的 EC2 实例关联起来 -我从其他 StackOverflow 帖子中读到,在使用 ASG 时必须明确完成此操作。

但是,在 ASG 实例启动并完成初始化后,我在控制台输出中仍然看不到该实例的任何弹性 IP:

在此输入图像描述

我已经确认实例确实正在使用用户数据: 在此输入图像描述

我尝试查看系统日志内部,看看初始化期间是否有任何错误消息,但一开始我看不到任何表明命令associate-address失败的信息(内部/var/log/cloud-init-output)。

编辑:尝试调试:

但是,我随后手动将弹性 IP 与我的实例关联,通过 SSH 进行连接,并尝试运行上面的用户数据命令。有趣的是,当我到达该aws ec2 associate-address部分时,我遇到了

无法找到凭据。您可以通过运行“aws configure”来配置凭证。

这似乎是问题的根源 - 我的 AWS 配置文件未配置。但是,我一直认为默认的 AWS 实例配置文件已设置好,您可以在实例完成初始化后访问 AWS CLI。

谁能指出为什么我的用于关联弹性 IP 地址的用户数据可能无法正确执行?

谢谢你!

amazon-ec2 amazon-web-services

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

如何使用 pandas 和 sqlalchemy 将 VARIANT 或 ARRAY 数据类型插入到 Snowflake 中

我有一个 Pandas 数据框,其中包含多个列表列。我想将它们作为ARRAY数据类型插入到我的 Snowflake 表中。

传统上,我使用 PostgreSQL,并简单地插入为df_to_insert.to_sql(TABLE_NAME, sqlalchemy_connection, **other_parameters).

然而,我正在努力插入雪花。当我有一个列表列时,sqlAlchemy Snowflake 方言认为它是一个字符串:

表达式类型与列数据类型不匹配,需要 ARRAY,但列 NAME_OF_COLUMN_WITH_LISTS 为 VARCHAR(2)

我尝试通过添加显式数据类型来向 sqlAlchemy 引擎提示该列不是字符串:

df_to_insert.to_sql("MY_SNOWFLAKE_TABLE_NAME",
                     snowflake_connection,
                     if_exists="append",
                     index=False,
                     dtype={'NAME_OF_COLUMN_WITH_LISTS': sqlalchemy.types.JSON})
Run Code Online (Sandbox Code Playgroud)

这只会让我:

sqlalchemy.exc.StatementError:(builtins.AttributeError)“SnowflakeDialect”对象没有属性“_json_serializer”

将数据插入变体/数组类型的雪花表并仍然使用 pandas / sqlalchemy 的最佳方法是什么?或者目前还没有什么好的办法吗?

python sqlalchemy pandas snowflake-cloud-data-platform

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

通过 AWS SAM 模板禁用 API Gateway 中一个方法资源端点的安全性

我正在使用 AWS Serverless 创建一个支持 Lambda 函数的 API 网关。

我定义了以下资源和方法:

/projects
   -> GET (should require API key)
   -> OPTIONS (should not, since it is used for CORS preflight)
Run Code Online (Sandbox Code Playgroud)

我遇到了 CORS 问题并需要 API 密钥。前端客户端代码403 Forbidden在启动预检 CORSOPTIONS请求时出错,因为API Key RequiredAWS 管理控制台中的 设置TrueOPTIONS方法。

我想专门为禁用的安全OPTIONS要求,但保持它的所有其他方法(GETPOST等)。这是我的资源定义(您可以看到我ApiKeyRequired: trueAuth对象中设置了默认值:

  MyApi:
    Type: 'AWS::Serverless::Api'
    Name: MyApi
    Properties:
      Auth:
        AddDefaultAuthorizerToCorsPreflight: true
        ApiKeyRequired: true # sets for all methods
      Cors:
        AllowCredentials: true
        AllowHeaders: …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cloudformation swagger aws-api-gateway aws-serverless

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