AWS SAM模板不执行BuildMethod

时间:2020-05-29 02:10:52

标签: aws-lambda aws-sam aws-sam-cli

我有一个lambda函数,它的包装有些非标准。我正在使用library(dplyr) library(zoo) library(ggplot2) df1 %>% arrange(id, as.yearmon(variable, '%b-%y')) %>% mutate(variable = factor(variable, levels = unique(variable))) %>% ggplot(aes(x = id, y = value, fill = variable)) + geom_bar(stat = "identity") 来帮助我打包所需的东西,并将其用作library(tidyr) df2 <- df1 %>% pivot_wider(names_from = variable, values_from = value) p <- ggplot(df2) colrs <- c('green', 'navy', 'red') nm1 <- names(df2)[-1] for(i in seq_along(nm1)) p <- p + geom_bar(aes(x = id, y = !! rlang::sym(nm1[i])), position = 'identity', stat = 'identity', fill = colrs[i]) 命令的构建方法。但是我没有看到这个makefile文件被执行。不知道为什么不。 这是我所拥有的:

sam_template.yaml:

#include<stdio.h>
#include<stdlib.h>

struct no {
 float info;
 struct no* prox;
};
typedef struct no No;

struct pilha {
 No* prim;
};

pilha* pilha_cria (void){
    pilha* p = (pilha*) malloc(sizeof(pilha));
    p->prim = NULL;
    return p;
}

/* função auxiliar: insere no início */
No* ins_ini (No* l, float v)
{
     No* p = (No*) malloc(sizeof(No));
     p->info = v;
     p->prox = l;
     return p;
}
/* função auxiliar: retira do início */
No* ret_ini (No* l)
{
     No* p = l->prox;
     free(l);
     return p;
}

int vazia (pilha* p)
{
    return (p->prim==NULL);
}

void pilha_push (pilha* p, float v)
{
     p->prim = ins_ini(p->prim,v);
}

float pilha_pop (pilha* p)
{
     float v;
     if (vazia(p)) {
     printf("Pilha vazia.\n");
     exit(1); /* aborta programa */
     }
     v = p->prim->info;
     p->prim = ret_ini(p->prim);
     return v;
}

void pilha_libera (pilha* p)
{
     No* q = p->prim;
     while (q!=NULL) {
     No* t = q->prox;
     free(q);
     q = t;
     }
     free(p);
}

/* imprime: versão com lista */
void pilha_imprime (pilha* p)
{
 No* q;
 for (q=p->prim; q!=NULL; q=q->prox)
 printf("%f\n",q->info);
}

/* vai imprimir da base para o topo usando as funções já definidas e uma pilha auxiliar */
void imprime (pilha* p)
{
 No* q;
 for (q=p->prim; q!=NULL; q=q->prox)
 printf("%f\n",q->info);
}

void troca_topo(pilha* p)
{
    if(vazia(p))
    {
        printf("\nPilha Vazia!\n");
        return;
    }

    No* no_aux = (No*) malloc(sizeof(No)); // nó auxiliar.
    No* tmp = tmp->prox; // ponteiro que aponta para o primeiro nó da pilha.

    while(tmp->prox != NULL)// laco que percorre a pilha ate o ponteiro apontar para o ultimo nó.
        tmp = tmp->prox;

    // troca dos valores:
    no_aux->info = tmp->info; // elemento do nó auxiliar recebe o elemento do ultimo nó.
    tmp->info = (tmp->prox)->info; // o elemento do ultimo nó recebe o elemento do primeiro nó.
    (tmp->prox)->info = no_aux->info; // o primeiro nó recebe o elemento armazenado no nó auxiliar(que era o ultimo elemento).

    free(no_aux);// liberar a memoria do nó auxiliar.
}


int main(){

        /* Implementação de pilha com lista encadeada */
    pilha *p;
    p = pilha_cria();
    pilha_push(p,10);
    pilha_push(p,15);
    pilha_push(p,20);
    pilha_push(p,25);
    float v = pilha_pop(p);
    printf("Imprime : %f \n", v);
    printf("\n");

        /* vai imprimir do topo para a base, percorrendo a lista encadeada */
    pilha_imprime(p);
    printf("\n");

        /* vai imprimir da base para o topo usando as funções já definidas e uma pilha auxiliar */
    imprime(p);
    printf("\n");

        /*vai executar a função troca_topo, que troca o valor do topo com aquele abaixo, usando somente as funções push e pop*/
        // protótipo: void troca_topo(Pilha*p) - emite mensagem de erro para
        // pilha vazia ou com menos de dois elementos.
    troca_topo(p);
    pilha_imprime(p);

    pilha_libera(p);
    system("PAUSE");
    return 0;
}

Makefile :(名称基于一些AWS示例)

Makefile

我运行sam build时构建成功,但是我可以告诉Makefile没有运行(没有打印出任何消息,它将创建一个AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: > subscriptions_functions Sample SAM Template for subscriptions_functions Globals: Function: Timeout: 3 Resources: GetSubscriptionsFunction: Type: AWS::Serverless::Function Properties: CodeUri: . Handler: app.lambda_handler_individual_methods Runtime: python3.7 Events: GetSubscriptions: Type: Api Properties: Path: /subscriptions Method: get Metadata: BuildMethod: makefile Environment: Variables: SERVICE_METHOD_NAME: 'xyz' REQ_CLASS_NAME: 'xyz' RES_CLASS_NAME: 'xyz' 目录,但没有)

任何人都知道此设置有什么问题吗?

1 个答案:

答案 0 :(得分:0)

所以我弄清楚了,它与语法无关。 我从IntelliJ终端运行。自从我碰到这堵墙以来,我就开始四处搜集并运行其他一些SAM命令。运行sam validate仍然失败,但是出现错误,指出未设置默认区域。 在.aws/config中都正确设置了我的区域,甚至尝试导出环境变量AWS_DEFAULT_REGION,但是没有任何效果。它一直未设置区域失败。 因此,我开始查看IntelliJ中的插件,结果发现我同时安装了AWS ToolkitDebugger for AWS Lambda(由Thundera安装)。 我卸载了后来的产品,然后又恢复了业务。尚不清楚此插件为何会干扰我的控制台和cli,但确实如此。摆脱它就可以了

相关问题